Due to the growing use of technology, the key success of modern societies is in the hands of organizations which try to profit the most from technology for providing better services. RooyeKhat Media was founded in 2015 aiming to create communicative and informative platforms supported by Internet and network on the basis of modern technology. We focus on the fields of designing, programming, supporting communicative and media software on mobile phones and tablets.

© 2017 RooyeKhat Media Co all rights reserved .

Due to the growing use of technology, the key success of modern societies is in the hands of organizations which try to profit the most from technology for providing better services. RooyeKhat Media was founded in 2015 aiming to create communicative and informative platforms supported by Internet and network on the basis of modern technology. We focus on the fields of designing, programming, supporting communicative and media software on mobile phones and tablets.

Our Perspective

The motto “innovative ideas in technology” well defines our major perspective and policy in the present era. This perspective manifests our commitment to these three key points: new ideas, innovation, the latest events in technology. Rooyekhat Media has drawn a bright future regarding its favorable abilities and potentials. we outline our perspective till 2021 as below:

  • To create the most popular e-jobs society in our country
  • To obtain the highest rank among local instant massaging apps in our country
  • To create necessary platforms for running the biggest online upload and file storage center in our country
  • To acquire a favorable position among the online culture-oriented radio stations
  • To increase the company’s validity relying on skilled, creative, motivated and knowledgeable human resources with bright backgrounds
  • To conduct knowledge-based researches, keep and improve communication with scientific-research centers especially with universities
  • To speed up the developmental plans, increase productivity and profitability in all activities while staying committed to maintain the health of the financial and economic relations

In this regard, we, at Rooyekhat Media, are doing our bests to achieve these goals the sooner the better.


Nowadays, information and communication technology is based on human resources. The quality of human resources plays more important role than hardware and technology. RooyeKhat Media is proud of working with professional and experienced human resources to achieve its excellent goals. Getting familiar with the members of our team and the management categories, and having a look at their background can confirm their scientific and executive skills in this company.


RooyeKhat Media Family

It should be noted that other experienced specialists and advisors have supported us at all stages.

One of our basic principles is to pay attention to the real needs of users and clients; providing practical consultation and continuous communication are our major values.

If you are willing to have our services and consultation, please keep in touch with us.


units 7 & 8, 4th floor, number 13, 11th alley, MirEmad Street, Motahari Street,
Tehran, Iran.
Zip Code: 1587748118


Phone Number: +98 (21) 28319
            +98 (21) 88524510 - 88175197

Fax: +98 (21) 28319999

Saturday to Wednesday, from 9:00 a.m. to 5:00 p.m.

Please make an arrangement before visiting the company.
We are always very pleased to make more acquaintances. If you are interested in getting more familiar with our team and the office, we are looking forward to meet you in RooyeKhat Media company.
Please make an arrangement before visiting the office.

A Simple Message

Let’s say you have the following very simple message definition:

message Test1 {
  required int32 a = 1;

In an application, you create a Test1 message and set a to 150. You then serialize the message to an output stream. If you were able to examine the encoded message, you’d see three bytes:

08 96 01

So far, so small and numeric – but what does it mean? Read on…

Base 128 Variants

To understand your simple protocol buffer encoding, you first need to understand varints. Varints are a method of serializing integers using one or more bytes. Smaller numbers take a smaller number of bytes.

Each byte in a varint, except the last byte, has the most significant bit (msb) set – this indicates that there are further bytes to come. The lower 7 bits of each byte are used to store the two’s complement representation of the number in groups of 7 bits, least significant group first.

So, for example, here is the number 1 – it’s a single byte, so the msb is not set:

0000 0001

And here is 300 – this is a bit more complicated:

1010 1100 0000 0010

How do you figure out that this is 300? First you drop the msb from each byte, as this is just there to tell us whether we’ve reached the end of the number (as you can see, it’s set in the first byte as there is more than one byte in the varint):

1010 1100 0000 0010
→ 010 1100  000 0010

You reverse the two groups of 7 bits because, as you remember, varints store numbers with the least significant group first. Then you concatenate them to get your final value:

000 0010  010 1100
→  000 0010 ++ 010 1100
→  100101100
→  256 + 32 + 8 + 4 = 300

Message Structure

As you know, a protocol buffer message is a series of key-value pairs. The binary version of a message just uses the field’s number as the key – the name and declared type for each field can only be determined on the decoding end by referencing the message type’s definition (i.e. the .proto file).

When a message is encoded, the keys and values are concatenated into a byte stream. When the message is being decoded, the parser needs to be able to skip fields that it doesn’t recognize. This way, new fields can be added to a message without breaking old programs that do not know about them. To this end, the “key” for each pair in a wire-format message is actually two values – the field number from your.proto file, plus a wire type that provides just enough information to find the length of the following value.

The available wire types are as follows:

Type Meaning Used For
0 Varint int32, int64, uint32, uint64, sint32, sint64, bool, enum
1 64-bit fixed64, sfixed64, double
2 Length-delimited string, bytes, embedded messages, packed repeated fields
3 Start group groups (deprecated)
4 End group groups (deprecated)
5 32-bit fixed32, sfixed32, float

Each key in the streamed message is a varint with the value(field_number << 3) | wire_type – in other words, the last three bits of the number store the wire type.

Now let’s look at our simple example again. You now know that the first number in the stream is always a varint key, and here it’s 08, or (dropping the msb):


000 1000

You take the last three bits to get the wire type (0) and then right-shift by three to get the field number (1). So you now know that the tag is 1 and the following value is a varint. Using your varint-decoding knowledge from the previous section, you can see that the next two bytes store the value 150.

96 01 = 1001 0110  0000 0001
       → 000 0001  ++  001 0110 (drop the msb and reverse the groups of 7 bits)
       → 10010110
       → 2 + 4 + 16 + 128 = 150

More Value Types

Signed Integers

As you saw in the previous section, all the protocol buffer types associated with wire type 0 are encoded as varints. However, there is an important difference between the signed int types (sint32 and sint64) and the “standard” int types (int32and int64) when it comes to encoding negative numbers. If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes long – it is, effectively, treated like a very large unsigned integer. If you use one of the signed types, the resulting varint uses ZigZag encoding, which is much more efficient.

ZigZag encoding maps signed integers to unsigned integers so that numbers with a small absolute value (for instance, -1) have a small varint encoded value too. It does this in a way that “zig-zags” back and forth through the positive and negative integers, so that -1 is encoded as 1, 1 is encoded as 2, -2 is encoded as 3, and so on, as you can see in the following table:


Signed Original Encoded As
 0 0
-1 1
 1 2
-2 3
 2147483647 4294967294
-2147483648 4294967295

In other words, each value n is encoded using

(n << 1) ^ (n >> 31)

for sint32s, or

(n << 1) ^ (n >> 63)

for the 64-bit version.

Note that the second shift – the (n >> 31) part – is an arithmetic shift. So, in other words, the result of the shift is either a number that is all zero bits (if n is positive) or all one bits (if n is negative).

When the sint32 or sint64 is parsed, its value is decoded back to the original, signed version.


Non-variant Numbers

Non-varint numeric types are simple – double and fixed64 have wire type 1, which tells the parser to expect a fixed 64-bit lump of data; similarly float and fixed32 have wire type 5, which tells it to expect 32 bits. In both cases the values are stored in little-endian byte order.


A wire type of 2 (length-delimited) means that the value is a varint encoded length followed by the specified number of bytes of data.

message Test2 {
  required string b = 2;

Setting the value of b to “testing” gives you:

12 07 74 65 73 74 69 6e 67

The red bytes are the UTF8 of “testing”. The key here is 0x12 → tag = 2, type = 2. The length varint in the value is 7 and lo and behold, we find seven bytes following it – our string.

Embedded Messages

Here’s a message definition with an embedded message of our example type, Test1:

message Test3 {
  required Test1 c = 3;

And here’s the encoded version, again with the Test1’s a field set to 150:

1a 03 08 96 01

As you can see, the last three bytes are exactly the same as our first example (08 96 01), and they’re preceded by the number 3 – embedded messages are treated in exactly the same way as strings (wire type = 2).

Optional And Repeated Elements

If a proto2 message definition has repeated elements (without the [packed=true] option), the encoded message has zero or more key-value pairs with the same tag number. These repeated values do not have to appear consecutively; they may be interleaved with other fields. The order of the elements with respect to each other is preserved when parsing, though the ordering with respect to other fields is lost. In proto3, repeated fields use packed encoding, which you can read about below.

For any non-repeated fields in proto3, or optional fields in proto2, the encoded message may or may not have a key-value pair with that tag number.

Normally, an encoded message would never have more than one instance of a non-repeated field. However, parsers are expected to handle the case in which they do. For numeric types and strings, if the same field appears multiple times, the parser accepts the last value it sees. For embedded message fields, the parser merges multiple instances of the same field, as if with the Message::MergeFrom method – that is, all singular scalar fields in the latter instance replace those in the former, singular embedded messages are merged, and repeated fields are concatenated. The effect of these rules is that parsing the concatenation of two encoded messages produces exactly the same result as if you had parsed the two messages separately and merged the resulting objects. That is, this:

MyMessage message;
message.ParseFromString(str1 + str2);

is equivalent to this:

MyMessage message, message2;

This property is occasionally useful, as it allows you to merge two messages even if you do not know their types.

Packed Repeated Fields

Version 2.1.0 introduced packed repeated fields, which in proto2 are declared like repeated fields but with the special [packed=true] option. In proto3, repeated fields are packed by default. These function like repeated fields, but are encoded differently. A packed repeated field containing zero elements does not appear in the encoded message. Otherwise, all of the elements of the field are packed into a single key-value pair with wire type 2 (length-delimited). Each element is encoded the same way it would be normally, except without a tag preceding it.

For example, imagine you have the message type:

message Test4 {
  repeated int32 d = 4 [packed=true];

Now let’s say you construct a Test4, providing the values 3, 270, and 86942 for the repeated field d. Then, the encoded form would be:

22        // tag (field number 4, wire type 2)
06        // payload size (6 bytes)
03        // first element (varint 3)
8E 02     // second element (varint 270)
9E A7 05  // third element (varint 86942)

Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire types) can be declared “packed”.

Note that although there’s usually no reason to encode more than one key-value pair for a packed repeated field, encoders must be prepared to accept multiple key-value pairs. In this case, the payloads should be concatenated. Each pair must contain a whole number of elements.

Protocol buffer parsers must be able to parse repeated fields that were compiled as packed as if they were not packed, and vice versa. This permits adding [packed=true] to existing fields in a forward- and backward-compatible way.

Field Order

While you can use field numbers in any order in a .proto, when a message is serialized its known fields should be written sequentially by field number, as in the provided C++, Java, and Python serialization code. This allows parsing code to use optimizations that rely on field numbers being in sequence. However, protocol buffer parsers must be able to parse fields in any order, as not all messages are created by simply serializing an object – for instance, it’s sometimes useful to merge two messages by simply concatenating them.

If a message has unknown fields, the current Java and C++ implementations write them in arbitrary order after the sequentially-ordered known fields. The current Python implementation does not track unknown fields.


This article describes the binary wire format for protocol buffer messages. In order to use protocol buffers in your applications, it is not necessary to read it completely, but it can be very useful to find out how different protocol buffer formats affect the size of your encoded messages. A Simple Message Let’s say you have the following very simple […]

This article is about protocol buffers – a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more.

the current article aimed at Java, C++, or Python developers who want to use protocol buffers in their applications. This overview introduces protocol buffers and tells you what you need to do to get started .

What are protocol buffers?

Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. You can even update your data structure without breaking deployed programs that are compiled against the “old” format.

How do they work?

You specify how you want the information you’re serializing to be structured by defining protocol buffer message types in .proto files. Each protocol buffer message is a small logical record of information, containing a series of name-value pairs. Here’s a very basic example of a .proto file that defines a message containing information about a person:

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];

  repeated PhoneNumber phone = 4;

As you can see, the message format is simple – each message type has one or more uniquely numbered fields, and each field has a name and a value type, where value types can be numbers (integer or floating-point), booleans, strings, raw bytes, or even (as in the example above) other protocol buffer message types, allowing you to structure your data hierarchically. You can specify optional fields, required fields, and repeated fields.

Once you’ve defined your messages, you run the protocol buffer compiler for your application’s language on your .proto file to generate data access classes. These provide simple accessors for each field (like name() and set_name()) as well as methods to serialize/parse the whole structure to/from raw bytes – so, for instance, if your chosen language is C++, running the compiler on the above example will generate a class called Person. You can then use this class in your application to populate, serialize, and retrieve Person protocol buffer messages. You might then write some code like this:

Person person;
person.set_name("John Doe");
fstream output("myfile", ios::out | ios::binary);

Then, later on, you could read your message back in:

fstream input("myfile", ios::in | ios::binary);
Person person;
cout << "Name: " << person.name() << endl;
cout << "E-mail: " << person.email() << endl;

You can add new fields to your message formats without breaking backwards-compatibility; old binaries simply ignore the new field when parsing. So if you have a communications protocol that uses protocol buffers as its data format, you can extend your protocol without having to worry about breaking existing code.

You’ll find a complete reference for using generated protocol buffer code in the API Reference section, and you can find out more about how protocol buffer messages are encoded in Protocol Buffer Encoding.

Why not just use XML?

Protocol buffers have many advantages over XML for serializing structured data. Protocol buffers:

  • are simpler
  • are 3 to 10 times smaller
  • are 20 to 100 times faster
  • are less ambiguous
  • generate data access classes that are easier to use programmatically

For example, let’s say you want to model a person with a name and an email. In XML, you need to do:

    <name>John Doe</name>

while the corresponding protocol buffer message (in protocol buffer text format) is:

# Textual representation of a protocol buffer.
# This is *not* the binary format used on the wire.
person {
  name: "John Doe"
  email: "jdoe@example.com"

When this message is encoded to the protocol buffer binary format (the text format above is just a convenient human-readable representation for debugging and editing), it would probably be 28 bytes long and take around 100-200 nanoseconds to parse. The XML version is at least 69 bytes if you remove whitespace, and would take around 5,000-10,000 nanoseconds to parse.

Also, manipulating a protocol buffer is much easier:

  cout << "Name: " << person.name() << endl;
  cout << "E-mail: " << person.email() << endl;

Whereas with XML you would have to do something like:

  cout << "Name: "
       << person.getElementsByTagName("name")->item(0)->innerText()
       << endl;
  cout << "E-mail: "
       << person.getElementsByTagName("email")->item(0)->innerText()
       << endl;

However, protocol buffers are not always a better solution than XML – for instance, protocol buffers would not be a good way to model a text-based document with markup (e.g. HTML), since you cannot easily interleave structure with text. In addition, XML is human-readable and human-editable; protocol buffers, at least in their native format, are not. XML is also – to some extent – self-describing. A protocol buffer is only meaningful if you have the message definition (the .proto file).

Sounds like the solution for me! How do I get started?

Download the package – this contains the complete source code for the Java, Python, and C++ protocol buffer compilers, as well as the classes you need for I/O and testing. To build and install your compiler, follow the instructions in the README.

Once you’re all set, try following the tutorial for your chosen language – this will step you through creating a simple application that uses protocol buffers.

Introducing proto3

Our most recent version 3 release introduces a new language version – Protocol Buffers language version 3 (aka proto3), as well as some new features in our existing language version (aka proto2). Proto3 simplifies the protocol buffer language, both for ease of use and to make it available in a wider range of programming languages: our current release lets you generate protocol buffer code in Java, C++, Python, Java Lite, Ruby, JavaScript, Objective-C, and C#. In addition you can generate proto3 code for Go using the latest Go protoc plugin, available from the golang/protobuf Github repository. More languages are in the pipeline.

We currently recommend trying proto3 only:

  • If you want to try using protocol buffers in one of our newly-supported languages.
  • If you want to try our new open-source RPC implementation gRPC – we recommend using proto3 for all new gRPC servers and clients as it avoids compatibility issues.

Note that the two language version APIs are not completely compatible. To avoid inconvenience to existing users, we will continue to support the previous language version in new protocol buffers releases.

.Full documentation for proto3 is coming soon!

(If the names proto2 and proto3 seem a little confusing, it’s because when we originally open-sourced protocol buffers it was actually Google’s second version of the language – also known as proto2. This is also why our open source version number started from v2.0.0).

A bit of history

Protocol buffers were initially developed at Google to deal with an index server request/response protocol. Prior to protocol buffers, there was a format for requests and responses that used hand marshalling/unmarshalling of requests and responses, and that supported a number of versions of the protocol. This resulted in some very ugly code, like:

 if (version == 3) {
 } else if (version > 4) {
   if (version == 5) {

Explicitly formatted protocols also complicated the rollout of new protocol versions, because developers had to make sure that all servers between the originator of the request and the actual server handling the request understood the new protocol before they could flip a switch to start using the new protocol.

Protocol buffers were designed to solve many of these problems:

  • New fields could be easily introduced, and intermediate servers that didn’t need to inspect the data could simply parse it and pass through the data without needing to know about all the fields.
  • Formats were more self-describing, and could be dealt with from a variety of languages (C++, Java, etc.)

However, users still needed to hand-write their own parsing code.

As the system evolved, it acquired a number of other features and uses:

  • Automatically-generated serialization and deserialization code avoided the need for hand parsing.
  • In addition to being used for short-lived RPC (Remote Procedure Call) requests, people started to use protocol buffers as a handy self-describing format for storing data persistently (for example, in Bigtable).
  • Server RPC interfaces started to be declared as part of protocol files, with the protocol compiler generating stub classes that users could override with actual implementations of the server’s interface.

Protocol buffers are now Google’s lingua franca for data – at time of writing, there are 48,162 different message types defined in the Google code tree across 12,183 .proto files. They’re used both in RPC systems and for persistent storage of data in a variety of storage systems

This article is about protocol buffers – a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more. the current article aimed at Java, C++, or Python developers who want to use protocol buffers in their applications. This overview introduces protocol buffers and tells you what you need […]

One of the top most popular apps in 2015 was Facebook Messenger. Instant messaging apps are on the pick of their popularity, people install and register in apps like WhatsApp, Viber, Skype in tens of millions. Texting has become the new norm and for the most part, especially for millennials, has replaced voice calling. One of the most interesting recent trends for instant messaging is its adoption for various specific goals, including business ones.

Instant messaging communication concept has several advantages over traditional communication via email. For starters, it’s an ability to exchange information faster and streamline it overall. Many problems in communication arise when questions are left answered, because people can’t keep track on an information flow efficiently.

On this list below we’ve put together the five messaging app startups and their apps that simplify people’s life in several aspects.


XROS company was founded by Ami Ben-David in 2015 in London, UK to bring the convenience of an instant messaging technology to the Enterprise. Prior to establishing XROS, Ami career spanned from working at Aladdin Knowledge Systems, a software security company, later acquired by Vector Capital, in early 2000 to Doat Media Ltd in 2010, where he, Rami Kasterstein and Joey Simhon established Everything.me company, where they developed EverythingMe Android app launcher. That project was shut down in December of 2015 and since then Ami Ben-David and his team decided to focus on another project, they’d been developing since 2014 – an instant messaging app for business.

Instant messaging apps like Facebook’s Messenger or WhatsAp have become a day-to-day means of communication for hundreds millions of people all over the world. But when it comes to business communication, the closest example of an instant messaging app we can bring up is the Slack app, but it’s intended to be used for companies internal communication only. Ami Ben-David XROS app empowers businesses with a sophisticated and yet easy-to-use app, both mobile and desktop, to communicate between companies per-to-per or in groups.

Here are the reasons that make XROS compelling:


uncluttered, streamlined interface  .

group chat support via Channels  .  

SportOn company was founded by Jeet Dattani and Jaydeep Talatia in New Jersey, US in June of 2014. The startup is driven by its founders passion to sport and their wish to bring sport fans all over the globe an app to experience an excitement of a sport game ups and downs together. The company founders have managed to establish it without going through funding rounds to attract venture capital, by side consulting projects through AppOn platform.

The innovation, the app brings to the table, lays in putting together instant messaging, scores, team and player information in a single mobile app for sport fans to enjoy. In the app, sport fans can create “Crowds” to chat with their friends under one screen, having all of their favorite team’s scores and updates right under their fingertips.

 Here are the reasons that make SportOn compellin:

it replaces several apps to deliver unified experience  .

first-hand awareness of what sport fans need  .

solid social media marketing strategy  .


YikYak company was founded by Tyler Droll and Brooks Huffington in October of 2013 in Atlanta, US. This startup is on a mission to make the world feel small again, to bring the power and convenience of an instant messaging to local communities all over the globe. In 2013 Tyler Droll, Furman University freshman, together with his friend Brooks Huffington saw a unique opportunity to create a mobile app for hyper-local communities. For the past 2+ years the company went through three rounds of funding from 9 investors and currently employees more than 10 people.

As of today, the app helps people in more than 1,600 university campuses in US to have their voice in their local community. The best analogy to describe the YikYak app is a bulletin board, where people can see posts from other people in their area and communicate with them easily.

 : Here are the reasons that make YikYak app compelling

good understanding of local communities messaging needs

thoughtful social media marketing strategy

excellent UI


YellowMessenger is an instant messaging company, founded by Indian entrepreneurs Raghu Kumar and Jaya Kishore Reddy in September of 2014. YellowMessenger combines marketplace and an Android chat app in a single powerful solution that builds a bridge between businesses and consumers. With a simple chat, the app users can find restaurants and book tables, shop from online and local stores, book a cab and do dozens of different kind of orders or bookings. The app is a brainchild of Raghu Kumar, who once went through an apartment buying experience, when Whatsapp app communication with one of the marketers made his choice.

The Yellow Messenger revenue model is based on providing a premium subscription for business to get 24×7 communication channel with new and existing customers. The second revenue source is  commission for transactions that are conducted across Yellow Messenger’s affiliate ecommerce platforms such as  Flipkart, Myntra, Snapdeal, Amazon, Jabong, Print Venue, Groupon etc., that are directed through Yellow Messenger.

Here are the reasons that make YikYak app compelling:

supports 100+ million local stores and brands listed on Yellow  .

NLP (Natural Language Processing) , AI (Artificial Intelligence) to identify user intents  .


Text-a-Pro is an instant messaging solution from Pro.com, the marketplace to get estimates and reviews for a home project. Pro.com was founded in 2014 by Matt Williams,Dean Falconer, Greg Meyer, Eric Wilson, Gregor Purdy in Seattle, US. The company has successfully raised $17.5M of a venture capital in 2 rounds from 10 investors. Pro.com company mission strikes a chord with any homeowner or renter in US, who needs to get an estimate for a home project. In October of 2015, Pro.com launched an instant messaging service to allow home service customers and pros to communicate directly via Pro-a-Text messaging app. It was the next logical step on the company’s mission to solve a problem of finding the right local home service professional and effective communication every step of the project.

Here are the reasons that make Pro-a-Text app compelling:

Flat-rate prices can be pre-negotiated via chat  .

Ability to schedule a project instantly with a help of home project manager  .

Available on Facebook Messenger as well  .


Following the period of exponential adoption by people for personal communication with their friends and family, messaging apps are on the rise of their usage for specific goals. Many startups see a marketing opportunity to bring advantages of an instant messaging app to specific business verticals. As for any startup, their success partly supported by their ability to demonstrate that their idea is viable, there is a market for it and hence venture capital should be invested into their project. Because social networking and hence communication is one of the top activities people have with their smartphone and tablet, we believe messaging apps will continue to be one of the dominant of mobile app industry.

    Written by  Artyom Dogtiev            http://www.businessofapps.com/5-app-startups-innovating-in-messaging/

One of the top most popular apps in 2015 was Facebook Messenger. Instant messaging apps are on the pick of their popularity, people install and register in apps like WhatsApp, Viber, Skype in tens of millions. Texting has become the new norm and for the most part, especially for millennials, has replaced voice calling. One of the […]

Nowadays, the most important concern of many organizations is designing, editing and implementing the strategies which dynamic and complicated situations guarantee their success and survival. The fundamental strategies of Rooyekhat Media are:

  • To employ efficient and committed human resources, and to implement educational programs
  • To create motivational mechanisms for employees to participate effectively in achieving the goals of company
  • To improve, to develop and to update the infrastructures of the company
  • To increase and to update the specialized knowledge of the company through research and development (R & D)

In Rooyekhat Media, we seek to achieve the goals such as below services:

  1. Communications:

Communication is transferring a message from sender to receiver provided that the concept is the same for both sides. In RooyeKhat Media, the basis of all projects is to provide services regarding online communications.

  1. Artificial Intelligence:

Artificial intelligence is a kind of systems which can react just like intelligent human beings; some sorts of behaviors such as comprehending complicated situations, simulating the processes of thinking, the ways of human reasoning and successful response to them, learning and ability to solve the problems. In the projects of RooyeKhat Media, we intend to use the data, while combining statistics and computer science, and applying modern techniques of artificial intelligence in an optimal way.

  1. Social Networks:

Social network is a social structure making up of a set of individual and organization nodes which are connected with each other via one or more kinds of dependence like ideas, financial exchange, friends and web links. Providing infrastructures and creating social networks are considered one of the main strategies for gaining popularity and raising efficiency of the projects in RooyeKhat Media.

  1. Big Data:

Big data is entitled a set of data which are really large and complex, so that managing, controlling and processing them at a specified and an expected time is beyond the ability of the software. Identification systems with radio waves, sensor networks, social networks, texts and documents on the internet in a large scale are some examples of Big Data. Another strategy for predicting and meeting the users’ needs in our company is to use the newest storage systems of Big Data in the projects.

  1. Content Delivery Network (CDN):

Content Delivery Network (CDN) is a large system consisting of numerous proxy servers which are distributed in several centers in the world over the Internet Service, according to the user’s geographical location. By the use of CDN, the content is delivered to the users via the nearest server. This network extremely affects the increase of speed in the content delivery and the bandwidth through high traffic websites such as Google, Yahoo and Facebook. Due to the increasing demand of local information access and necessary predictions in order to ease the users’ access, we intend to implement all projects by means of CDN.

  1. Religion and Culture Integration, and Localization of Technology:

The effective use of technology is possible only when it is compatible with our climatic, geographical conditions, and indigenous culture. It means that we should harmonize the technology and our religion, culture and climatic condition. In Rooyekhat Media, we try to advance all projects with regards to Iranian-Islamic culture and to maintain national- religious values with the latest technologies, and we always try to create something different with innovative ideas.


We express our condolences on coming of Muharram and the days of mourning for the martyrdom of Imam Hussein (peace be upon him) and his companions to all of the Shias over the world. Hopefully, thanks to the infallible Imams (peace be upon them) whole of the world would be free from oppression, but full of justice and peace.

The sixth Job fair will be held at Sharif University of Technology on 25th to 27th of September, 2016. The Job fair is an event in which a large number of job seekers and companies participate in order to exchange their information on jobs needed and to introduce their companies. This fair is held seasonal or annually, and it can be regarded as the fair of job vacancies. In a way that a vast amount of job vacancies and entrepreneurial opportunities may offer up in most fields of study for students and newly graduates. This kind of fairs is a good opportunity for companies and organizations to meet a large number of job seekers, and to get their desired individuals as personnel in a competitive environment. The goal of this fair and the educational workshops is introducing companies and new businesses, giving idea to the students and newly graduates to find job, interacting with industry and etc. Visiting the Job fair will be free to the public in case of registering on the website. It is necessary to have the printed form of registering during the Job fair.

RooyeKhat Media along with other companies at this fair is proud of hosting you, dear students and job seekers. We invite you to visit our booth, number 53, during the fair. Doubtlessly, we try to provide the best services and the most comprehensive information for you.

The list of present companies at this fair so far: http://jobfair.sharif.ir/cnf/exh

With regard to the necessity of informing about the latest events and updating our websites, the content providing department has started its work seriously. This department intends to make you informed perpetually about the process of happenings in our company by presenting articles and using new announcements.

After passing a year of company’s activity and experiencing many ups and downs, it has been relocated to the new address in June. Hopefully, we can step forward stronger on the path of developing in the new year.