Usage of Hazelcast VersionedPortalbleHazelcast Portable serializationhazelcast vs ehcacheHow partitioning works in Hazelcast?java.util.concurrentTimeOutException in HazelcastHazelcast Mancenter rises cpu usageHazelcast OperationTimeoutExceptionPredicate usage in Hazelcast C# clientHazelcast Replication?Map.AddIndex() throws Hazelcast Unhandled Exception in Hazelcast .Net ClientHazelcast I/O threads usageHazelcast localKeySet

Details of video memory access arbitration in Space Invaders

Is there a way for presidents to legally extend their terms beyond the maximum of four years?

Can I ask to speak to my future colleagues before accepting an offer?

Is it allowed to spend a night in the first entry country before moving to the main destination?

I'm reinstalling my Linux desktop, how do I keep SSH logins working?

How exactly is a normal force exerted, at the molecular level?

"Plugged in" or "Plugged in in"

Why does a brace command group need spaces after the opening brace in POSIX Shell Grammar?

Should I share with a new service provider a bill from its competitor?

What does Mildred mean by this line in Three Billboards Outside Ebbing, Missouri?

Golf the smallest circle!

The Confused Alien

What is the difference between x RadToDeg cos x div and COSC?

Averting Real Women Don’t Wear Dresses

What is the line crossing the Pacific Ocean that is shown on maps?

Do I have to roll to maintain concentration if a target other than me who is affected by my concentration spell takes damage?

Are metaheuristics ever practical for continuous optimization?

Acceleration in Circular motion

In the context of a differentiator circuit, what is a “current-sensing resistor”?

What's the safest way to inform a new user of their password on my web site?

Miss Toad and her frogs

How can I convince my reader that I will not use a certain trope?

Reverse of diffraction

Wrong corporate name on employment agreement



Usage of Hazelcast VersionedPortalble


Hazelcast Portable serializationhazelcast vs ehcacheHow partitioning works in Hazelcast?java.util.concurrentTimeOutException in HazelcastHazelcast Mancenter rises cpu usageHazelcast OperationTimeoutExceptionPredicate usage in Hazelcast C# clientHazelcast Replication?Map.AddIndex() throws Hazelcast Unhandled Exception in Hazelcast .Net ClientHazelcast I/O threads usageHazelcast localKeySet






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








0















I am looking in to portable serialization in Hazelcast. In particular, I was interested in the VersionedPortable-interface. I created a scenario where two clients have different versions of the same class:



//VERSION 1
public class Vehicle implements VersionedPortable
private final String type;

public Vehicle() this.type = "";
public Vehicle(final String type) this.type = type;

public void setType(final String type) this.type = type;
public String getType () return this.type;

public void writePortable(PortableWriter writer) throws IOException
writer.writeUTF("type", type);


public void readPortable(PortableReader reader) throws IOException
type = reader.readUTF("type");


public int getFactoryId() return 1;
public int getClassId() return 1;
public int getClassVersion () return 1;


//VERSION 2
public class Vehicle implements VersionedPortable
private final String type;
private final int tyres;

public Vehicle() this.type = ""; this tyres = 0;
public Vehicle(final String type, final int tyres) this.type = type; this.tyres = tyres;

public void setType(final String type) this.type = type;
public String getType () return this.type;

public void writePortable(PortableWriter writer) throws IOException
writer.writeUTF("type", type);
writer.writeInt("tyres", tyres);


public void readPortable(PortableReader reader) throws IOException
type = reader.readUTF("type");
tyres = reader.readInt("tyres");


public int getFactoryId() return 1;
public int getClassId() return 1;
public int getClassVersion () return 2;



I used these two classes in the following scenario:



  • Hazelcast client with V1 creates a vehicle and stores it in an IMap: type=Porsche

  • Hazelcast client with V2 updates the vehicle and stores it in the IMap: tyres=4

  • Hazelcast client with V1 updates the vehicle and stores it in the IMap: type=Audi

  • Hazelcast client with V2 reads the vehicle and prints it to the console: expected: Audi, 4; got: Audi, 0

Is my expectation wrong? I'm beginning to suspect that VersionedPortable is not meant for what I expected (supporting reading and writing different versions of the same object in a single IMap).



Some code on Github (line 95) and another SO-post (see third bullet) seem to point in that direction.










share|improve this question




























    0















    I am looking in to portable serialization in Hazelcast. In particular, I was interested in the VersionedPortable-interface. I created a scenario where two clients have different versions of the same class:



    //VERSION 1
    public class Vehicle implements VersionedPortable
    private final String type;

    public Vehicle() this.type = "";
    public Vehicle(final String type) this.type = type;

    public void setType(final String type) this.type = type;
    public String getType () return this.type;

    public void writePortable(PortableWriter writer) throws IOException
    writer.writeUTF("type", type);


    public void readPortable(PortableReader reader) throws IOException
    type = reader.readUTF("type");


    public int getFactoryId() return 1;
    public int getClassId() return 1;
    public int getClassVersion () return 1;


    //VERSION 2
    public class Vehicle implements VersionedPortable
    private final String type;
    private final int tyres;

    public Vehicle() this.type = ""; this tyres = 0;
    public Vehicle(final String type, final int tyres) this.type = type; this.tyres = tyres;

    public void setType(final String type) this.type = type;
    public String getType () return this.type;

    public void writePortable(PortableWriter writer) throws IOException
    writer.writeUTF("type", type);
    writer.writeInt("tyres", tyres);


    public void readPortable(PortableReader reader) throws IOException
    type = reader.readUTF("type");
    tyres = reader.readInt("tyres");


    public int getFactoryId() return 1;
    public int getClassId() return 1;
    public int getClassVersion () return 2;



    I used these two classes in the following scenario:



    • Hazelcast client with V1 creates a vehicle and stores it in an IMap: type=Porsche

    • Hazelcast client with V2 updates the vehicle and stores it in the IMap: tyres=4

    • Hazelcast client with V1 updates the vehicle and stores it in the IMap: type=Audi

    • Hazelcast client with V2 reads the vehicle and prints it to the console: expected: Audi, 4; got: Audi, 0

    Is my expectation wrong? I'm beginning to suspect that VersionedPortable is not meant for what I expected (supporting reading and writing different versions of the same object in a single IMap).



    Some code on Github (line 95) and another SO-post (see third bullet) seem to point in that direction.










    share|improve this question
























      0












      0








      0








      I am looking in to portable serialization in Hazelcast. In particular, I was interested in the VersionedPortable-interface. I created a scenario where two clients have different versions of the same class:



      //VERSION 1
      public class Vehicle implements VersionedPortable
      private final String type;

      public Vehicle() this.type = "";
      public Vehicle(final String type) this.type = type;

      public void setType(final String type) this.type = type;
      public String getType () return this.type;

      public void writePortable(PortableWriter writer) throws IOException
      writer.writeUTF("type", type);


      public void readPortable(PortableReader reader) throws IOException
      type = reader.readUTF("type");


      public int getFactoryId() return 1;
      public int getClassId() return 1;
      public int getClassVersion () return 1;


      //VERSION 2
      public class Vehicle implements VersionedPortable
      private final String type;
      private final int tyres;

      public Vehicle() this.type = ""; this tyres = 0;
      public Vehicle(final String type, final int tyres) this.type = type; this.tyres = tyres;

      public void setType(final String type) this.type = type;
      public String getType () return this.type;

      public void writePortable(PortableWriter writer) throws IOException
      writer.writeUTF("type", type);
      writer.writeInt("tyres", tyres);


      public void readPortable(PortableReader reader) throws IOException
      type = reader.readUTF("type");
      tyres = reader.readInt("tyres");


      public int getFactoryId() return 1;
      public int getClassId() return 1;
      public int getClassVersion () return 2;



      I used these two classes in the following scenario:



      • Hazelcast client with V1 creates a vehicle and stores it in an IMap: type=Porsche

      • Hazelcast client with V2 updates the vehicle and stores it in the IMap: tyres=4

      • Hazelcast client with V1 updates the vehicle and stores it in the IMap: type=Audi

      • Hazelcast client with V2 reads the vehicle and prints it to the console: expected: Audi, 4; got: Audi, 0

      Is my expectation wrong? I'm beginning to suspect that VersionedPortable is not meant for what I expected (supporting reading and writing different versions of the same object in a single IMap).



      Some code on Github (line 95) and another SO-post (see third bullet) seem to point in that direction.










      share|improve this question














      I am looking in to portable serialization in Hazelcast. In particular, I was interested in the VersionedPortable-interface. I created a scenario where two clients have different versions of the same class:



      //VERSION 1
      public class Vehicle implements VersionedPortable
      private final String type;

      public Vehicle() this.type = "";
      public Vehicle(final String type) this.type = type;

      public void setType(final String type) this.type = type;
      public String getType () return this.type;

      public void writePortable(PortableWriter writer) throws IOException
      writer.writeUTF("type", type);


      public void readPortable(PortableReader reader) throws IOException
      type = reader.readUTF("type");


      public int getFactoryId() return 1;
      public int getClassId() return 1;
      public int getClassVersion () return 1;


      //VERSION 2
      public class Vehicle implements VersionedPortable
      private final String type;
      private final int tyres;

      public Vehicle() this.type = ""; this tyres = 0;
      public Vehicle(final String type, final int tyres) this.type = type; this.tyres = tyres;

      public void setType(final String type) this.type = type;
      public String getType () return this.type;

      public void writePortable(PortableWriter writer) throws IOException
      writer.writeUTF("type", type);
      writer.writeInt("tyres", tyres);


      public void readPortable(PortableReader reader) throws IOException
      type = reader.readUTF("type");
      tyres = reader.readInt("tyres");


      public int getFactoryId() return 1;
      public int getClassId() return 1;
      public int getClassVersion () return 2;



      I used these two classes in the following scenario:



      • Hazelcast client with V1 creates a vehicle and stores it in an IMap: type=Porsche

      • Hazelcast client with V2 updates the vehicle and stores it in the IMap: tyres=4

      • Hazelcast client with V1 updates the vehicle and stores it in the IMap: type=Audi

      • Hazelcast client with V2 reads the vehicle and prints it to the console: expected: Audi, 4; got: Audi, 0

      Is my expectation wrong? I'm beginning to suspect that VersionedPortable is not meant for what I expected (supporting reading and writing different versions of the same object in a single IMap).



      Some code on Github (line 95) and another SO-post (see third bullet) seem to point in that direction.







      hazelcast






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 25 at 12:27









      PieterPieter

      2,5564 gold badges24 silver badges56 bronze badges




      2,5564 gold badges24 silver badges56 bronze badges






















          1 Answer
          1






          active

          oldest

          votes


















          0














          The other post you refer to has it right -- your V1 code only knows about the type field, and so any write done by V1 will only write the type field and not the tyres field. Since your V1 object doesn't know about tyres, it won't preserve the value that was written there by V2 code during a previous update.



          The good news is that your V1 code can read objects written by the V2 code, without requiring any modification. (NOTE: edited to correct statement, V1 can read objects written by V2, I mistyped and said write in the original)



          V2 code needs to be aware that as long as V1 clients are still part of the system, it has to be prepared to see entries that have no value there. It might be useful to set a default value to use when no value is found.



          In some cases, you may want to enforce a restriction that the reader checks the version of the object being read, and if it is from a later version of the code, prohibit updates to the object. In this way you can ensure that you won't lose updates from newer code, perhaps throwing an exception that will result in the user seeing a warning or error that they are not running the latest client code, and should update in order to have write access to the requested object.






          share|improve this answer

























          • Is it possible to test if the object was created by a client having an older version? In that case, the client having the newer version could replace the older version and from that point on, the V2 version would remain intact even when the V1-client updates it again, wouldn't it?

            – Pieter
            Mar 25 at 13:28











          • I immediately tried as you said: create V2-object, read and update in V1-client, read in V2-client. The result is the same. The fields which are not known in the V1-client have been reset to their default values.

            – Pieter
            Mar 25 at 13:37











          • The V1 code can only write V1 objects ... so every time V1 updates the object, any fields known only to V2 will be lost.

            – Mike Yawn
            Mar 25 at 13:59











          • Thanks for the clarification. It would be nice if the documentation of Hazelcast would clearly state that Portable is only backwards compatible for reads, but not for writes. Other solutions (like protobuf in the linked post) exclude the use of EntryProcessors which is a pity, but apparently the price we have to pay to also be backwards compatible for writes.

            – Pieter
            Mar 26 at 6:55










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55337779%2fusage-of-hazelcast-versionedportalble%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          The other post you refer to has it right -- your V1 code only knows about the type field, and so any write done by V1 will only write the type field and not the tyres field. Since your V1 object doesn't know about tyres, it won't preserve the value that was written there by V2 code during a previous update.



          The good news is that your V1 code can read objects written by the V2 code, without requiring any modification. (NOTE: edited to correct statement, V1 can read objects written by V2, I mistyped and said write in the original)



          V2 code needs to be aware that as long as V1 clients are still part of the system, it has to be prepared to see entries that have no value there. It might be useful to set a default value to use when no value is found.



          In some cases, you may want to enforce a restriction that the reader checks the version of the object being read, and if it is from a later version of the code, prohibit updates to the object. In this way you can ensure that you won't lose updates from newer code, perhaps throwing an exception that will result in the user seeing a warning or error that they are not running the latest client code, and should update in order to have write access to the requested object.






          share|improve this answer

























          • Is it possible to test if the object was created by a client having an older version? In that case, the client having the newer version could replace the older version and from that point on, the V2 version would remain intact even when the V1-client updates it again, wouldn't it?

            – Pieter
            Mar 25 at 13:28











          • I immediately tried as you said: create V2-object, read and update in V1-client, read in V2-client. The result is the same. The fields which are not known in the V1-client have been reset to their default values.

            – Pieter
            Mar 25 at 13:37











          • The V1 code can only write V1 objects ... so every time V1 updates the object, any fields known only to V2 will be lost.

            – Mike Yawn
            Mar 25 at 13:59











          • Thanks for the clarification. It would be nice if the documentation of Hazelcast would clearly state that Portable is only backwards compatible for reads, but not for writes. Other solutions (like protobuf in the linked post) exclude the use of EntryProcessors which is a pity, but apparently the price we have to pay to also be backwards compatible for writes.

            – Pieter
            Mar 26 at 6:55















          0














          The other post you refer to has it right -- your V1 code only knows about the type field, and so any write done by V1 will only write the type field and not the tyres field. Since your V1 object doesn't know about tyres, it won't preserve the value that was written there by V2 code during a previous update.



          The good news is that your V1 code can read objects written by the V2 code, without requiring any modification. (NOTE: edited to correct statement, V1 can read objects written by V2, I mistyped and said write in the original)



          V2 code needs to be aware that as long as V1 clients are still part of the system, it has to be prepared to see entries that have no value there. It might be useful to set a default value to use when no value is found.



          In some cases, you may want to enforce a restriction that the reader checks the version of the object being read, and if it is from a later version of the code, prohibit updates to the object. In this way you can ensure that you won't lose updates from newer code, perhaps throwing an exception that will result in the user seeing a warning or error that they are not running the latest client code, and should update in order to have write access to the requested object.






          share|improve this answer

























          • Is it possible to test if the object was created by a client having an older version? In that case, the client having the newer version could replace the older version and from that point on, the V2 version would remain intact even when the V1-client updates it again, wouldn't it?

            – Pieter
            Mar 25 at 13:28











          • I immediately tried as you said: create V2-object, read and update in V1-client, read in V2-client. The result is the same. The fields which are not known in the V1-client have been reset to their default values.

            – Pieter
            Mar 25 at 13:37











          • The V1 code can only write V1 objects ... so every time V1 updates the object, any fields known only to V2 will be lost.

            – Mike Yawn
            Mar 25 at 13:59











          • Thanks for the clarification. It would be nice if the documentation of Hazelcast would clearly state that Portable is only backwards compatible for reads, but not for writes. Other solutions (like protobuf in the linked post) exclude the use of EntryProcessors which is a pity, but apparently the price we have to pay to also be backwards compatible for writes.

            – Pieter
            Mar 26 at 6:55













          0












          0








          0







          The other post you refer to has it right -- your V1 code only knows about the type field, and so any write done by V1 will only write the type field and not the tyres field. Since your V1 object doesn't know about tyres, it won't preserve the value that was written there by V2 code during a previous update.



          The good news is that your V1 code can read objects written by the V2 code, without requiring any modification. (NOTE: edited to correct statement, V1 can read objects written by V2, I mistyped and said write in the original)



          V2 code needs to be aware that as long as V1 clients are still part of the system, it has to be prepared to see entries that have no value there. It might be useful to set a default value to use when no value is found.



          In some cases, you may want to enforce a restriction that the reader checks the version of the object being read, and if it is from a later version of the code, prohibit updates to the object. In this way you can ensure that you won't lose updates from newer code, perhaps throwing an exception that will result in the user seeing a warning or error that they are not running the latest client code, and should update in order to have write access to the requested object.






          share|improve this answer















          The other post you refer to has it right -- your V1 code only knows about the type field, and so any write done by V1 will only write the type field and not the tyres field. Since your V1 object doesn't know about tyres, it won't preserve the value that was written there by V2 code during a previous update.



          The good news is that your V1 code can read objects written by the V2 code, without requiring any modification. (NOTE: edited to correct statement, V1 can read objects written by V2, I mistyped and said write in the original)



          V2 code needs to be aware that as long as V1 clients are still part of the system, it has to be prepared to see entries that have no value there. It might be useful to set a default value to use when no value is found.



          In some cases, you may want to enforce a restriction that the reader checks the version of the object being read, and if it is from a later version of the code, prohibit updates to the object. In this way you can ensure that you won't lose updates from newer code, perhaps throwing an exception that will result in the user seeing a warning or error that they are not running the latest client code, and should update in order to have write access to the requested object.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Mar 25 at 13:51

























          answered Mar 25 at 13:08









          Mike YawnMike Yawn

          2865 bronze badges




          2865 bronze badges












          • Is it possible to test if the object was created by a client having an older version? In that case, the client having the newer version could replace the older version and from that point on, the V2 version would remain intact even when the V1-client updates it again, wouldn't it?

            – Pieter
            Mar 25 at 13:28











          • I immediately tried as you said: create V2-object, read and update in V1-client, read in V2-client. The result is the same. The fields which are not known in the V1-client have been reset to their default values.

            – Pieter
            Mar 25 at 13:37











          • The V1 code can only write V1 objects ... so every time V1 updates the object, any fields known only to V2 will be lost.

            – Mike Yawn
            Mar 25 at 13:59











          • Thanks for the clarification. It would be nice if the documentation of Hazelcast would clearly state that Portable is only backwards compatible for reads, but not for writes. Other solutions (like protobuf in the linked post) exclude the use of EntryProcessors which is a pity, but apparently the price we have to pay to also be backwards compatible for writes.

            – Pieter
            Mar 26 at 6:55

















          • Is it possible to test if the object was created by a client having an older version? In that case, the client having the newer version could replace the older version and from that point on, the V2 version would remain intact even when the V1-client updates it again, wouldn't it?

            – Pieter
            Mar 25 at 13:28











          • I immediately tried as you said: create V2-object, read and update in V1-client, read in V2-client. The result is the same. The fields which are not known in the V1-client have been reset to their default values.

            – Pieter
            Mar 25 at 13:37











          • The V1 code can only write V1 objects ... so every time V1 updates the object, any fields known only to V2 will be lost.

            – Mike Yawn
            Mar 25 at 13:59











          • Thanks for the clarification. It would be nice if the documentation of Hazelcast would clearly state that Portable is only backwards compatible for reads, but not for writes. Other solutions (like protobuf in the linked post) exclude the use of EntryProcessors which is a pity, but apparently the price we have to pay to also be backwards compatible for writes.

            – Pieter
            Mar 26 at 6:55
















          Is it possible to test if the object was created by a client having an older version? In that case, the client having the newer version could replace the older version and from that point on, the V2 version would remain intact even when the V1-client updates it again, wouldn't it?

          – Pieter
          Mar 25 at 13:28





          Is it possible to test if the object was created by a client having an older version? In that case, the client having the newer version could replace the older version and from that point on, the V2 version would remain intact even when the V1-client updates it again, wouldn't it?

          – Pieter
          Mar 25 at 13:28













          I immediately tried as you said: create V2-object, read and update in V1-client, read in V2-client. The result is the same. The fields which are not known in the V1-client have been reset to their default values.

          – Pieter
          Mar 25 at 13:37





          I immediately tried as you said: create V2-object, read and update in V1-client, read in V2-client. The result is the same. The fields which are not known in the V1-client have been reset to their default values.

          – Pieter
          Mar 25 at 13:37













          The V1 code can only write V1 objects ... so every time V1 updates the object, any fields known only to V2 will be lost.

          – Mike Yawn
          Mar 25 at 13:59





          The V1 code can only write V1 objects ... so every time V1 updates the object, any fields known only to V2 will be lost.

          – Mike Yawn
          Mar 25 at 13:59













          Thanks for the clarification. It would be nice if the documentation of Hazelcast would clearly state that Portable is only backwards compatible for reads, but not for writes. Other solutions (like protobuf in the linked post) exclude the use of EntryProcessors which is a pity, but apparently the price we have to pay to also be backwards compatible for writes.

          – Pieter
          Mar 26 at 6:55





          Thanks for the clarification. It would be nice if the documentation of Hazelcast would clearly state that Portable is only backwards compatible for reads, but not for writes. Other solutions (like protobuf in the linked post) exclude the use of EntryProcessors which is a pity, but apparently the price we have to pay to also be backwards compatible for writes.

          – Pieter
          Mar 26 at 6:55








          Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.








          Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.




















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55337779%2fusage-of-hazelcast-versionedportalble%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

          Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

          Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript