Μηνιαία αρχεία: Απρίλιος 2017


CCS Upcoming Events

Αγαπητά μας μέλη,

Χριστός Ανέστη και Χρόνια σας πολλά!

Υπενθυμίζουμε πως την επόμενη Τρίτη 25/4, είναι η Ετήσια Γενική Συνέλευση μας, της οποίας θα ακολουθήσει Δεξίωση. Παρακαλώ εγγραφείτε εδώ αν θα παρευρεθείτε αφού κάνετε login και διευθετήσετε τις οικονομικές σας οφειλές. Μέχρι αύριο είναι η προθεσμία για δήλωση υποψηφιότητας για το Δ.Σ.

Επιπλέον, την Τετάρτη 26/4 διοργανώνουμε το ανοικτό σεμινάριο Records Management, στο οποίο μπορείτε να συμμετάσχετε δωρεάν μαζί με συναδέλφους και συνεργάτες, αφού δηλώσετε συμμετοχή εδώ.

Στην ιστοσελίδα μας θα δείτε ακόμα πως στηρίζουμε την εκδήλωση Cybercrime Security Forum που θα γίνει στις 4 Μαΐου, και συνδιοργανώνουμε το Διαγωνισμό Προγραμματισμού ICPC που θα γίνει στις 13 Μαΐου.

Τέλος, σας καλούμε να δείτε την ιστοσελίδα του πρώτου Παγκύπριου Διαγωνισμού Ρομποτικής www.robotex.org.cy, για τον οποίο η προθεσμία για δηλώσεις συμμετοχής είναι η 25η Μαΐου.

Δείτε όλους τους σχετικούς συνδέσμους, δηλώστε συμμετοχή σε όσα σας αφορούν και προωθήστε σε πιθανούς ενδιαφερομένους!

Επικοινωνήστε μαζί μας για οποιαδήποτε διευκρίνιση.

Καλό Σαββατοκύριακο!

Με εκτίμηση
από την ομάδα του CCS

[email protected]


Replace a character in all filenames

The following command will search for files in the current directory (.) that have in their name the colon character :.
The files that match will then be renamed and all instances of the colon character : in the names will be replaced by the full stop character ..

find . -name "*:*" -execdir sh -c 'mv "$1" "${1//:/.}"' _ {} \;
  • -execdir command {} + is like -exec, but the specified command is run from the subdirectory containing the matched file, which is not normally the directory in which you started find.

Example: if you have a file named 2017-03-15 14:34:44.116002523.png then it will be renamed to 2017-03-15 14.34.44.116002523.png.


C++: Simplified version of ‘Friends with benefits’ demonstrating friend classes

A friend class in C++ can access the private and protected members of the class in which it is declared as a friend.

Friendship may allow a class to be better encapsulated by granting per-class access to parts of its API that would otherwise have to be public.[2] This increased encapsulation comes at the cost of tighter coupling due to interdependency between the classes.

Properties

  • Friendships are not symmetric – if class A is a friend of class B, class B is not automatically a friend of class A.
  • Friendships are not transitive – if class A is a friend of class B, and class B is a friend of class C, class A is not automatically a friend of class C.
  • Friendships are not inherited – if class Base is a friend of class X, subclass Derived is not automatically a friend of class X; and if class X is a friend of class Base, class X is not automatically a friend of subclass Derived.

From Wikipedia: https://en.wikipedia.org/wiki/Friend_class

In the following example we assign both the Man to be a friend of the Woman and the Woman to be a friend of the Man in order to allow both parties to access the private members of the other.

#include <iostream>
using namespace std;

class Man;

class Woman {
  friend class Man;

public:
  void touch(Man man);
private:
  void * body;
};

class Man {
  friend class Woman;

public:
  void touch(Woman woman);
private:
  void * body;
};

void Woman::touch(Man man) {
  void * other = man.body;
}

void Man::touch(Woman woman) {
  void * other = woman.body;
}

int main() {
  Man man;
  Woman woman;

  man.touch(woman);
  woman.touch(man);
  return 0;
}

How does ‘git pull’ and ‘git fetch’ differ?

In simple terms, the difference between the two Git commands is that git pull is composed by a git fetch followed by a git merge.

When you use git pull, Git will automatically merge any pulled commits into the branch you are currently working in, without letting you review them first. You will get a prompt only if there is conflict found during automatic merging.

When you use git fetch, Git retrieves any commits from the target branch that do not exist in your current branch and stores them in your local repository. However, it will not merge them with your current branch. To integrate the new commits into your current branch, you need to use git merge manually.
This command is particularly useful if you need to keep your repository up to date, but are working on something that might break if you merge your files.
For example, if you will go offline and you need to have those commits available to you but cannot merge at the time, using git fetch you will download the new commits to your machine without affecting your current code. Later you will be able to merge the new commits to your branch as/when you please.