Jump to content
Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble

NickTheGreek

Administrators
  • Content Count

    454
  • Joined

  • Last visited

  • Days Won

    76
  • Feedback

    N/A

Everything posted by NickTheGreek

  1. PHP is one of the most popular programming languages around the world, and the recent PHP 7 release made this server-side programming language better and more stable than ever. PHP is widely used in major projects. Facebook, for example, utilizes PHP for maintaining and creating their internal systems. WordPress uses PHP to power its internals, which in return is powering more than 26% of the web. Currently, PHP powers more than 82% of websites (whose server-side programming languages the Web Technology Surveys site is able to track). In this article, we'll look at three of the most popular PHP frameworks: Symfony, Laravel, and Yii. We'll examine how they compare to help you decide which one might be the best fit for your needs. Why pick a PHP framework? What's the point of using a framework instead of raw PHP to develop your application? A few benefits of using a framework include: A PHP framework makes development faster. For example, you don't have to write complex queries to retrieve the data from the database. PHP frameworks provide CRUD operations (Create, Read, Update, and Delete). Frameworks enable developers to scale systems easily. Code maintenance is easier than with a vanilla PHP application. The application code is concise and easy to work with. The MVC model ensures rapid development. Frameworks are better in securing the web application from common security threats. The don't repeat yourself (DRY) principle ensures that minimal code has maximum impact. The above benefits are too significant to be ignored. Even though raw PHP can be used to create any application, the current development standards require tools and time-management skills to meet the market demand. How to choose a PHP framework Answering a few questions can help you choose a framework: What are the features and functionality of the framework? (Does it offer what I need?) What is the learning curve of the framework? How scalable is the framework? Is the framework actively developed and maintained by the core team? Does the framework provide long-term support (LTS support) ? Does the framework have a strong community support? Symfony, Laravel, and Yii Before diving into technical specifics, here's an overview of the contenders: Symfony Symfony is a set of reusable PHP components, enabling the developer to create scalable, high-performance applications. With 30 components from which to choose, the developer has the complete freedom to experiment and work in a RAD environment. Symfony APIs also enable easy integration with third-party applications, and it can be used with popular front-end frameworks, such as AngularJS. Many popular projects, including Drupal and phpBB, also use a Symfony framework. In fact, Laravel, the most popular PHP framework, is build off of Symfony. Laravel Laravel, which is known as the "PHP framework for Web Artisans," offers an excellent community and wins as the most popular framework. (One of the leading Laravel developers on Livecoding.tv is Sfiskell.) In May 2015 Laravel announced that version 5.1 will offer long-term support for two years. Version 5.2 rolled out in December 2015. Many hosting companies provide Laravel support and offer hosting solutions for Laravel applications. Check out the Built with Laravel site to see great example projects. Yii Created by Qiang Xue in 2008, Yii is a secure, fast, high-performance application/web-development framework. Yii utilizes the Composer dependency manager for PHP for handling different dependencies and installations (more on it later). Yii also is the fastest PHP framework, thanks to the lazy loading technique. Another great feature of Yii is jQuery integration. The integration enables front-end developers to embrace the framework quickly, and it uses scaffolding to generate code. Similar to Symfony, Yii also utilizes components to enable rapid application development. How they compare All three frameworks are great for building Web 2.0 applications, but each framework serves a different purpose. Let's look at their features and how they stack up. Templating engines Templating engines minimize developer effort and provides better functionality in writing front-end code. Templating engines provide features such as automatic HTML escaping and filters, and fill the gap left by raw PHP. Symfony Twig template system Twig is a modern templating system for PHP. Symfony utilizes Twig to its advantage and enables developers to write clean, concise code and the ability to do more than with raw PHP. For example, it takes the following verbose code to write escaping: <?php echo $var ?> <?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?> Twig does the same with the following code: {{ var }} {{ var|escape }} {{ var|e }} {# shortcut to escape a variable #} See the Twig site to learn more about its features. Laravel Blade templating system Unlike other templating systems, Blade lets you use PHP code in the views. Also, Blade has zero overhead to application performance because the blade view files are stored in .blade.php extension. All the code in the view files is converted into raw PHP during processing. Yii Default templating system Yii doesn't utilize any third party templating system by default, but that doesn't mean it lacks templating system support. The choice of the templating system depends on the development team. Twig and Smarty are recommended. Symfony uses Twig, so if you have used Symfony in past, you might want to utilize Twig for your next Yii project. There is no clear winner here. All three frameworks use templating engines for better front-end coding and maintenance. A small advantage to Yii is that the framework does not have a pre-defined templating system. Framework differences Every framework is created differently. Symfony works on reusable components and provides the best modularity. Symfony also utilizes the model and controller for developing a web application, which may look rusty for many new developers, but it works. Also, Symfony is a good example of the modular framework. You can use the 30 components provided by Symfony in your project in a modular fashion. Yii uses an MVC framework. (Symfony does provide support for MVC, which is discussed in more detail in Is Symfony2 a MVC framework on the blog.sznapka.pl site.) Symfony can be used for rapid development and complex projects. Even though there is a debate on which framework is better for complex projects, Symfony does showcase brilliant complexity handling compared to other frameworks. Yii also utilizes components, but is not as modular as Symfony. Laravel doesn't provide a modular approach as sharp as the other two frameworks. If you are looking for a modular framework, go for Symfony. Otherwise, Laravel and Yii are both great choices. Installation The three frameworks provide multiple installation procedures. If you are using Composer for handling packages, you will be happy to know that all the frameworks can be installed via Composer. For Symfony, the role of the Composer is more crucial. The idea of component handling is best done by using the Composer PHP dependency manager. There are other ways of installing the respective frameworks. For example, you can install the frameworks using simple archive method. After installation, Yii provides you with a web app and a basic template to work on. Symfony 2 also provides a demo app to get started. Laravel is also easy to install using Composer create-project or via Laravel Installer. Check out the Laravel installation guide for details. Rapid development From the perspective of the company or the client, quickly getting the application to the market to meet consumer demand and beat competitors is important. Symfony stands out for being a robust framework with a strong community standing behind it. Laravel is growing rapidly, but still has a way to go before being considered the de facto choice for PHP development. On the other hand, if you have no knowledge of any PHP frameworks and want to get started as quickly as possible, consider Laravel. Laravel has an easy learning curve, and you'll find lots of tutorials online to help get you started. Yii takes performance to the next level, and provides code scaffolding for faster code generation and development. Performance The performance of any application only matters if it is a real-time application using critical data. How many web-based applications depend on high performance? Not many, but the performance of frameworks can play a crucial role in many projects. Social networks are prime example of real-time events and one of our star streamers, jadson, built a mobile social network using Yii2. When it comes to choosing the best framework for coding a high-performance application, Yii stands out as the fastest PHP framework in our lot. Laravel performance is highly debatable. It is slowest, but does that matter? You'll find online resources for speeding up performance, including a guide on GitHub for making your Laravel application faster. Database support Symfony 2 offers better database support. You can work with an array of databases, including NoSQL and DynamoDB. Yii and Laravel are also useful in this regard, but they support fewer databases than Symfony. The database supported by each framework is shown in Table 1. Table 1 Framework Laravel Yii Symfony 2 Database Microsoft BI MongoDB MySQL PostgreSQL Redis SQLite Microsoft BI MongoDB MySQL Oracle PostgreSQL SQLite Apache Jackrabbit CouchDB DynamoDB GemFire GraphDB MemBase MemCacheDB Microsoft BI MongoDB MySQL NoSQL Oracle PostgreSQL Community and resources A big predictor for an open source framework's longevity is the strength of its community. All the three frameworks have solid communities, although Symfony's might be a bit more mature. Communities evolve, so predicting the dynamics of the communities in the future is challenging. When it comes to learning material and documentation, Laravel stands out, although Symfony and Yii aren't lagging far behind: Laravel documentation Symfony documentation (3.0) Yii documentation Extendability Frameworks are structures that can be extended with extensions or packages, improving their functionality and scope. When it comes to extensions, Laravel is the winner. Packalyst, a directory of Laravel packages, offers more than 9,000 packages. Yii and Symfony, on the other hand, offer around 2800 extensions and 2830 bundles, respectively. With three times the number of extensions, Laravel seems to be the best framework in this regard. Similarities We have looked at the differences between the frameworks. Now let's look at their similarities: All three frameworks are full-stack PHP frameworks and offer the functionalities for creating web application, from front-end code writing to back-end data retrieval. The projects are open source and their source code can be found on GitHub, making it easy for anyone to contribute: Symfony Laravel Yii The frameworks are well documented and supported by a large communities. They each support ORM (Object Relationship Mapping). ORM is highly favored for writing OO code for your application. They are robust, secure, and reliable for creating Web 2.0 applications. Still stuck? Maybe these checklists will help you narrow down an option: Symfony: offers an LTS release, comes with loads of features, is currently the most stable framework, is a component-based framework and offers extensive modularity, and has a great community with lots of learning resources. Yii: comes with Ajax support, is great for developing real-time applications as it offers faster operations, is highly extensible. error handling is spot on, is good for creating Restful Web Services, and has a great community with lots of learning resources. Laravel: is the most popular framework in 2015-2016, supports Composer for package management, does unit testing well, offers tons of packages for extending framework functionality, and has a great community with lots of learning resources. Conclusion In the battle of Symfony vs. Laravel vs. Yii, all three PHP frameworks are excellent options that provide a full-stack development environment for developers. For me, Laravel is a winner that is emerging as a star with no sign of stopping. Still, Symfony and Yii are both excellent frameworks. Symfony is well-established and with a bigger, more mature community. Yii is a unique framework that is robust, secure, and gets the job done. To see the frameworks in action, check out what developers are using them for on Livecoding.tv, which has channels for Symfony, Yii, and Laravel. The developers are also available on chat or Skype during streaming sessions. Follow the developers, ask them your questions, and get answers in real-time. https://opensource.com/business/16/6/which-php-framework-right-you
  2. αν δεν σας αρεσει η μουσική κλείστε τον ηχο
  3. Advanced Vi Cheat Sheet Starting/Ending Status Modes Inserting Text Motion Deleting Text Yanking Changing Text Putting Text Buffers Markers Searching Replacing Text Regular Expressions Counts Ranges Shell Functions Files VI Settings Key Mapping Other Click here for the Basic VI Cheatsheet General Notes: 1. Before doing anything to a document, type the following command followed by a carriage return: :set showmode 2. VI is CaSe SEnsItiVe!!! So make sure Caps Lock is OFF. Starting and Ending VI Starting VI vi filename Edits filename vi -r filename Edits last save version of filename after a crash vi + n filename Edits filename and places curser at line n vi + filename Edits filename and places curser on last line vi +/string filename Edits filename and places curser on first occurance of string vi filename file2 ... Edits filename, then edits file2 ... After the save, use :n Ending VI ZZ or :wq or Saves and exits VI :w Saves current file but doesn't exit :w! Saves current file overriding normal checks but doesn't exit :w file Saves current as file but doesn't exit :w! file Saves to file overriding normal checks but doesn't exit :n,mw file Saves lines n through m to file :n,mw >>file Saves lines n through m to the end of file :q Quits VI and may prompt if you need to save :q! Quits VI and without saving :e! Edits file discarding any unsaved changes (starts over) :we! Saves and continues to edit current file Status :.= Shows current line number := Shows number of lines in file Control-G Shows filename, current line number, total lines in file, and % of file location l Displays tab (^l) backslash (\) backspace (^H) newline ($) bell (^G) formfeed (^L^) of current line Modes Vi has two modes insertion mode and command mode. The editor begins in command mode, where the cursor movement and text deletion and pasting occur. Insertion mode begins upon entering an insertion or change command. [ESC] returns the editor to command mode (where you can quit, for example by typing :q!). Most commands execute as soon as you type them except for "colon" commands which execute when you press the ruturn key. Inserting Text i Insert before cursor I Insert before line a Append after cursor A Append after line o Open a new line after current line O Open a new line before current line r Replace one character R Replace many characters CTRL-v char While inserting, ignores special meaning of char (e.g., for inserting characters like ESC and CTRL) until ESC is used :r file Reads file and inserts it after current line :nr file Reads file and inserts it after line n CTRL-i or TAB While inserting, inserts one shift width Things to do while in Insert Mode: CTRL-h or Backspace While inserting, deletes previous character CTRL-w While inserting, deletes previous word CTRL-x While inserting, deletes to start of inserted text CTRL-v Take the next character literally. (i.e. To insert a Control-H, type Control-v Control-h) Motion h Move left j Move down k Move up l Move right Arrow Keys These do work, but they may be too slow on big files. Also may have unpredictable results when arrow keys are not mapped correctly in client. w Move to next word W Move to next blank delimited word b Move to the beginning of the word B Move to the beginning of blank delimted word ^ Moves to the first non-blank character in the current line + or Moves to the first character in the next line - Moves to the first non-blank character in the previous line e Move to the end of the word E Move to the end of Blank delimited word ( Move a sentence back ) Move a sentence forward { Move a paragraph back } Move a paragraph forward [[ Move a section back ]] Move a section forward 0 or | Move to the begining of the line n| Moves to the column n in the current line $ Move to the end of the line 1G Move to the first line of the file G Move to the last line of the file nG Move to nth line of the file :n Move to nth line of the file fc Move forward to c Fc Move back to c H Move to top of screen nH Moves to nth line from the top of the screen M Move to middle of screen L Move to botton of screen nL Moves to nth line from the bottom of the screen Control-d Move forward ½ screen Control-f Move forward one full screen Control-u Move backward ½ screen Control-b Move backward one full screen CTRL-e Moves screen up one line CTRL-y Moves screen down one line CTRL-u Moves screen up ½ page CTRL-d Moves screen down ½ page CTRL-b Moves screen up one page CTRL-f Moves screen down one page CTRL-I Redraws screen z z-carriage return makes the current line the top line on the page nz Makes the line n the top line on the page z. Makes the current line the middle line on the page nz. Makes the line n the middle line on the page z- Makes the current line the bottom line on the page nz- Makes the line n the bottom line on the page % Move to associated ( ), { }, [ ] Deleting Text Almost all deletion commands are performed by typing d followed by a motion. For example, dw deletes a word. A few other deletes are: x Delete character to the right of cursor nx Deletes n characters starting with current; omitting n deletes current character only X Delete character to the left of cursor nX Deletes previous n characters; omitting n deletes previous character only D Delete to the end of the line d$ Deletes from the cursor to the end of the line dd or Delete current line ndw Deletes the next n words starting with current ndb Deletes the previous n words starting with current ndd Deletes n lines beginning with the current line :n,md Deletes lines n through m dMotion_cmd Deletes everything included in the Motion Command (e.g., dG would delete from current position to the end of the file, and d4 would delete to the end of the fourth sentence). "np Retrieves the last nth delete (last 9 deletes are kept in a buffer) "1pu.u. Scrolls through the delete buffer until the desired delete is retrieved (repeat u.) Yanking Text Like deletion, almost all yank commands are performed by typing y followed by a motion. For example, y$ yanks to the end of the line. Two other yank commands are: yy Yank the current line :y Yank the current line nyy or nY Places n lines in the buffer-copies yMotion_cmd Copies everything from the curser to the Motion Command (e.g., yG would copy from current position to the end of the file, and y4 would copy to the end of the fourth sentence) "(a-z)nyy or "(a-z)ndd Copies or cuts (deletes) n lines into a named buffer a through z; omitting n works on current line Changing text The change command is a deletion command that leaves the editor in insert mode. It is performed by typing c followed by a motion. For example cw changes a word. A few other change commands are: C Change to the end of the line cc or S Change the whole line until ESC is pressed xp Switches character at cursor with following character stext Substitutes text for the current character until ESC is used cwtext Changes current word to text until ESC is used Ctext Changes rest of the current line to text until ESC is used cMotion_cmd Changes to text from current position to Motion Command until ESC is used << or >> Shifts the line left or right (respectively) by one shift width (a tab) n<< or n>> Shifts n lines left or right (respectively) by one shift width (a tab) <Motion_cmd or >Motion_cmd Use with Motion Command to shift multiple lines left or right Putting text p Put after the position or after the line P Put before the poition or before the line "(a-z)p or "(a-z)P Pastes text from a named buffer a through z after or before the current line Buffers Named buffers may be specified before any deletion, change, yank or put command. The general prefix has the form "c where c is any lowercase character. for example, "adw deletes a word into buffer a. It may thereafter be put back into text with an appropriate "ap. Markers Named markers may be set on any line in a file. Any lower case letter may be a marker name. Markers may also be used as limits for ranges. mc Set marker c on this line `c Go to beginning of marker c line. 'c Go to first non-blank character of marker c line. Search for strings /string Search forward for string ?string Search back for string n Search for next instance of string N Search for previous instance of string % Searches to beginning of balancing ( ) [ ] or { } fc Searches forward in current line to char Fc Searches backward in current line to char tc Searches forward in current line to character before char Tchar Searches backward in current line to character before char ?str Finds in reverse for str :set ic Ignores case when searching :set noic Pays attention to case when searching :n,ms/str1/str2/opt Searches from n to m for str1; replaces str1 to str2; using opt-opt can be g for global change, c to confirm change (y to acknowledge, to suppress), and p to print changed lines & Repeats last command :g/str/cmd Runs cmd on all lines that contain str :g/str1/s/str2/str3/ Finds the line containing str1, replaces str2 with str3 :v/str/cmd Executes cmd on all lines that do not match str , Repeats, in reverse direction, last / or ? search command Replace The search and replace function is accomplished with the command. It is commonly used in combination with ranges or the :g command (below). :s/pattern/string/flags Replace pattern with string according to flags. g Flag - Replace all occurences of pattern c Flag - Confirm replaces. & Repeat last command Regular Expressions . (dot) Any single character except newline * zero or more occurances of any character [...] Any single character specified in the set [^...] Any single character not specified in the set \< Matches beginning of word \> Matches end of word ^ Anchor - beginning of the line $ Anchor - end of line \< Anchor - begining of word \> Anchor - end of word \(...\) Grouping - usually used to group conditions \n Contents of nth grouping \ Escapes the meaning of the next character (e.g., \$ allows you to search for $) \\ Escapes the \ character [...] - Set Examples [A-Z] The SET from Capital A to Capital Z [a-z] The SET from lowercase a to lowercase z [0-9] The SET from 0 to 9 (All numerals) [./=+] The SET containing . (dot), / (slash), =, and + [-A-F] The SET from Capital A to Capital F and the dash (dashes must be specified first) [0-9 A-Z] The SET containing all capital letters and digits and a space [A-Z][a-zA-Z] In the first position, the SET from Capital A to Capital Z In the second character position, the SET containing all letters [a-z]{m} Look for m occurances of the SET from lowercase a to lowercase z [a-z]{m,n} Look for at least m occurances, but no more than n occurances of the SET from lowercase a to lowercase z Regular Expression Examples /Hello/ Matches if the line contains the value Hello /^TEST$/ Matches if the line contains TEST by itself /^[a-zA-Z]/ Matches if the line starts with any letter /^[a-z].*/ Matches if the first character of the line is a-z and there is at least one more of any character following it /2134$/ Matches if line ends with 2134 /\(21|35\)/ Matches is the line contains 21 or 35 Note the use of ( ) with the pipe symbol to specify the 'or' condition /[0-9]*/ Matches if there are zero or more numbers in the line /^[^#]/ Matches if the first character is not a # in the line Notes: 1. Regular expressions are case sensitive 2. Regular expressions are to be used where pattern is specified Counts Nearly every command may be preceded by a number that specifies how many times it is to be performed. For example, 5dw will delete 5 words and 3fe will move the cursor forward to the 3rd occurence of the letter e. Even insertions may be repeated conveniently with this method, say to insert the same line 100 times. Ranges Ranges may precede most "colon" commands and cause them to be executed on a line or lines. For example :3,7d would delete lines 3-7. Ranges are commonly combined with the command to perform a replacement on several lines, as with :.,$s/pattern/string/g to make a replacement from the current line to the end of the file. :n,m Range - Lines n-m :. Range - Current line Range - Last line :'c Range - Marker c :% Range - All lines in file :g/pattern/ Range - All lines that contain pattern Shell Functions :! cmd Executes shell command cmd; you can add these special characters to indicate:% name of current file# name of last file edited !! cmd Executes shell command cmd, places output in file starting at current line :!! Executes last shell command :r! cmd Reads and inserts output from cmd :f file Renames current file to file :w !cmd Sends currently edited file to cmd as standard input and execute cmd :cd dir Changes current working directory to dir :sh Starts a sub-shell (CTRL-d returns to editor) :so file Reads and executes commands in file (file is a shell script) !Motion_cmd Sends text from current position to Motion Command to shell command cmd !}sort Sorts from current position to end of paragraph and replaces text with sorted text Files :w file Write to file :r file Read file in after line :n Go to next file Go to previous file :e file Edit file !!program Replace line with output from program VI Settings --noto Note: Options given are default. To change them, enter type :set option to turn them on or :set nooptioni to turn them off.To make them execute every time you open VI, create a file in your HOME directory called .exrc and type the options without the colon (:) preceding the option Set Default Description :set ai noai Turns on auto indentation :set all -- Prints all options to the screen :set ap aw Prints line after d c J m t u commands :set aw noaw Automatic write on :n ! e# ^^ :rew ^} :tag :set bf nobf Discards control characters from input :set dir=tmp dir = /tmp Sets tmp to directory or buffer file :set eb noed Precedes error messages with a bell :set ed noed Precedes error messages with a bell :set ht= ht = 8 Sets terminal hardware tabs :set ic noic Ignores case when searching :set lisp nolisp Modifies brackets for Lisp compatibility. :set list nolist Shows tabs (^l) and end of line ($) :set magic magic Allows pattern matching with special characters :set mesg mesg Allows others to send messages :set nooption Turns off option :set nu nonu Shows line numbers :set opt opt Speeds output; eliminates automatic RETURN :set para= para = LIlPLPPPQPbpP macro names that start paragraphs for { and } operators :set prompt prompt Prompts for command input with : :set re nore Simulates smart terminal on dumb terminal :set remap remap Accept macros within macros :set report noreport Indicates largest size of changes reported on status line :set ro noro Changes file type to "read only" :set scroll=n scroll = 11 set n lines for CTRL-d and z :set sh=shell_path sh = /bin/sh set shell escape (default is /bin/sh) to shell_path :set showmode nosm Indicates input or replace mode at bottom :set slow slow Pospone display updates during inserts :set sm nosm Show matching { or ( as ) or } is typed :set sw=n sw = 8 Sets shift width to n characters :set tags=x tags = /usr/lib/tags Path for files checked for tags (current directory included in default) :set term $TERM Prints terminal type :set terse noterse Shorten messages with terse :set timeout Eliminates one-second time limit for macros :set tl=n tl = 0 Sets significance of tags beyond n characters (0 means all) :set ts=n ts = 8 Sets tab stops to n for text input :set wa nowa Inhibits normal checks before write commands :set warn warn Warns "no write since last change" :set window=n window = n Sets number of lines in a text window to n :set wm=n wm = 0 Sets automatic wraparound n spaces from right margin. :set ws ws Sets automatic wraparound n spaces from right margin. Key Mapping NOTE: Map allows you to define strings of VI commands. If you create a file called ".exrc" in your home directory, any map or set command you place inside this file will be executed every time you run VI. To imbed control characters like ESC in the macro, you need to precede them with CTRL-v. If you need to include quotes ("), precede them with a \ (backslash). Unused keys in vi are: K V g q v * = and the function keys. Example (The actual VI commands are in blue): :map v /I CTRL-v ESC dwiYou CTRL-v ESC ESC Description: When v is pressed, search for "I" (/I ESC), delete word (dw), and insert "You" (iYou ESC). CTRL-v allows ESC to be inserted :map key cmd_seq Defines key to run cmd_seq when pressed :map Displays all created macros on status line :unmap key Removes macro definition for key :ab str string When str is input, replaces it with string :ab Displays all abbreviations :una str Unabbreviates str Other ~ Toggle upper and lower case J Join lines nJ Joins the next n lines together; omitting n joins the beginning of the next line to the end of the current line . Repeat last text-changing command u Undo last change (Note: u in combination with . can allow multiple levels of undo in some versions) U Undo all changes to line ; Repeats last f F t or T search command :N or :E You can open up a new split-screen window in (n)vi and then use ^w to switch between the two. Return to the top Page produced by Lagmonster - Feb 2009 http://www.lagmonster.org/docs/vi2.html
  4. Vi Cheat Sheet Modes Quitting Inserting Text Motion Deleting Text Yanking Changing Text Putting Text Buffers Markers Searching Replacing Text Regular Expressions Counts Ranges Files Other Click here for the Advanced VI Cheatsheet Modes Vi has two modes insertion mode and command mode. The editor begins in command mode, where the cursor movement and text deletion and pasting occur. Insertion mode begins upon entering an insertion or change command. [ESC] returns the editor to command mode (where you can quit, for example by typing :q!). Most commands execute as soon as you type them except for "colon" commands which execute when you press the ruturn key. Quitting Exit, saving changes :q Exit as long as there have been no changes ZZ Exit and save changes if any have been made :q! Exit and ignore any changes Inserting Text i Insert before cursor I Insert before line a Append after cursor A Append after line o Open a new line after current line O Open a new line before current line r Replace one character R Replace many characters Motion h Move left j Move down k Move up l Move right w Move to next word W Move to next blank delimited word b Move to the beginning of the word B Move to the beginning of blank delimted word e Move to the end of the word E Move to the end of Blank delimited word ( Move a sentence back ) Move a sentence forward { Move a paragraph back } Move a paragraph forward 0 Move to the begining of the line $ Move to the end of the line 1G Move to the first line of the file G Move to the last line of the file nG Move to nth line of the file :n Move to nth line of the file fc Move forward to c Fc Move back to c H Move to top of screen M Move to middle of screen L Move to botton of screen % Move to associated ( ), { }, [ ] Deleting Text Almost all deletion commands are performed by typing d followed by a motion. For example, dw deletes a word. A few other deletes are: x Delete character to the right of cursor X Delete character to the left of cursor D Delete to the end of the line dd Delete current line Delete current line Yanking Text Like deletion, almost all yank commands are performed by typing y followed by a motion. For example, y$ yanks to the end of the line. Two other yank commands are: yy Yank the current line :y Yank the current line Changing text The change command is a deletion command that leaves the editor in insert mode. It is performed by typing c followed by a motion. For wxample cw changes a word. A few other change commands are: C Change to the end of the line cc Change the whole line Putting text p Put after the position or after the line P Put before the poition or before the line Buffers Named buffers may be specified before any deletion, change, yank or put command. The general prefix has the form "c where c is any lowercase character. for example, "adw deletes a word into buffer a. It may thereafter be put back into text with an appropriate "ap. Markers Named markers may be set on any line in a file. Any lower case letter may be a marker name. Markers may also be used as limits for ranges. mc Set marker c on this line `c Go to beginning of marker c line. 'c Go to first non-blank character of marker c line. Search for strings /string Search forward for string ?string Search back for string n Search for next instance of string N Search for previous instance of string Replace The search and replace function is accomplished with the command. It is commonly used in combination with ranges or the :g command (below). :s/pattern/string/flags Replace pattern with string according to flags. g Flag - Replace all occurences of pattern c Flag - Confirm replaces. & Repeat last command Regular Expressions . (dot) Any single character except newline * zero or more occurances of any character [...] Any single character specified in the set [^...] Any single character not specified in the set ^ Anchor - beginning of the line $ Anchor - end of line \< Anchor - begining of word \> Anchor - end of word \(...\) Grouping - usually used to group conditions \n Contents of nth grouping [...] - Set Examples [A-Z] The SET from Capital A to Capital Z [a-z] The SET from lowercase a to lowercase z [0-9] The SET from 0 to 9 (All numerals) [./=+] The SET containing . (dot), / (slash), =, and + [-A-F] The SET from Capital A to Capital F and the dash (dashes must be specified first) [0-9 A-Z] The SET containing all capital letters and digits and a space [A-Z][a-zA-Z] In the first position, the SET from Capital A to Capital Z In the second character position, the SET containing all letters Regular Expression Examples /Hello/ Matches if the line contains the value Hello /^TEST$/ Matches if the line contains TEST by itself /^[a-zA-Z]/ Matches if the line starts with any letter /^[a-z].*/ Matches if the first character of the line is a-z and there is at least one more of any character following it /2134$/ Matches if line ends with 2134 /\(21|35\)/ Matches is the line contains 21 or 35 Note the use of ( ) with the pipe symbol to specify the 'or' condition /[0-9]*/ Matches if there are zero or more numbers in the line /^[^#]/ Matches if the first character is not a # in the line Notes: 1. Regular expressions are case sensitive 2. Regular expressions are to be used where pattern is specified Counts Nearly every command may be preceded by a number that specifies how many times it is to be performed. For example, 5dw will delete 5 words and 3fe will move the cursor forward to the 3rd occurence of the letter e. Even insertions may be repeated conveniently with thismethod, say to insert the same line 100 times. Ranges Ranges may precede most "colon" commands and cause them to be executed on a line or lines. For example :3,7d would delete lines 3-7. Ranges are commonly combined with the command to perform a replacement on several lines, as with :.,$s/pattern/string/g to make a replacement from the current line to the end of the file. :n,m Range - Lines n-m :. Range - Current line Range - Last line :'c Range - Marker c :% Range - All lines in file :g/pattern/ Range - All lines that contain pattern Files :w file Write to file :r file Read file in after line :n Go to next file Go to previos file :e file Edit file !!program Replace line with output from program Other ~ Toggle upp and lower case J Join lines . Repeat last text-changing command u Undo last change U Undo all changes to line Return to the top Page produced by Lagmonster - Oct 2000 http://www.lagmonster.org/docs/vi.html
  5. CSR Decoder Use this CSR Decoder to decode your Certificate Signing Request and and verify that it contains the correct information. A Certificate Signing Request is a block of encoded text that contains information about the company that an SSL certificate will be issued to and the SSL public key. Once a CSR is created it is difficult to verify what information is contained in it because it is encoded. Since certificate authorities use the information in CSRs to create the certificate, you need to decode CSRs to make sure the information is accurate. To check CSRs and view the information inside of them, simply paste your CSR into the box below and the AJAX CSR Decoder will do the rest. Your CSR should start with "-----BEGIN CERTIFICATE REQUEST----- " and end with "-----END CERTIFICATE REQUEST----- ". If you are interested, you can also learn more about Certificate Signing Requests. Once you have your CSR, use our SSL Wizard to find the best SSL provider. If you want to check CSRs on your own computer, run this OpenSSL command: openssl req -in mycsr.csr -noout -text https://www.sslshopper.com/csr-decoder.html
  6. Καλώς ήρθατε στο designhost.gr.

    Νιώστε ελεύθερα και πλοηγηθείτε στην κοινότητα μας όπου μπορείτε να βρείτε διάφορες πληροφορίες και να γνωριστείτε με τα υπόλοιπα μέλη.

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

  7. IPS Community Suite 4.1.19.2 Released 04/11/2017 Key Changes This is a maintenance release to fix minor issues. As we prepare our 4.2 release we will continue to provide small maintenance updates to 4.1.
  8. είπα να δοκιμάσω κατι καινούργιο φέτος το αποτέλεσμα δείχνει αρκετά καλό !
  9. NickTheGreek

    HTTP/2

    http2 explained http2 explained describes the protocol HTTP/2 at a technical and protocol level. Background, the protocol, the implementations and the future. Written by Daniel Stenberg. This is a "living document" in the sense that I keep posting updates, and I care about and value feedback, questions and comments I get about it. This document improves over time thanks to a joint effort. Full credits to all helpers at the end of the document. This document has been downloaded more than 200,000 times and has been given praise widely. Give it a shot! It is provided free of charge under a Creative Commons license. It is available in several different formats for your convenience, including epub, PDF and a plain web version. Translations All the translations are offered if you click the image on the right: Chinese by Calvin Zhang and Simon Xia English by Daniel Stenberg (original version) French by Olivier Cahagne Japanese by Tatsuhiro Tsujikawa Portuguese by Bruno Lellis and Filipe Boleto Russian by Vladimir Lettiev Spanish by Javier Infante Swedish by Daniel Stenberg All translations are of course also subject to bug fixes and improvements! Help out! Comment on, add sections, fix typos or correct errors in this document! Submit an issue or a pull-request, or just email daniel-http2@haxx.se. Source The full document is available on github. Network capture samples h2-14-plain-nghttp2.pcapng is a Wireshark capture of curl talking http2 draft-14 in plain text with nghttp2.org. h2-akamai.zip is a 949KB zip with a bundled SSL key. It is a full stream showing Firefox downloading around 380 different images from the Akamai HTTP/2 demo, thus over HTTPS. Get Wireshark 2.0 to dissect HTTP/2 frames. If you have more and better sample stream captures, please send them my way! This page was updated May 4, 2016. https://daniel.haxx.se/http2/
  10. NickTheGreek

    HTTP/2

    https://github.com/http2/http2-spec/wiki/Tools
  11. Telegram Desktop reaches version 1.0 – and it's BEAUTIFUL Telegram was available for desktops and laptops since 2013. Today it finally graduates to version 1.0 with a fabulous new design. Consistent material design, great animations, and support for custom themes make Telegram for Windows, Mac, and Linux the tool for messaging from your Mac or PC. This is what Telegram Desktop 1.0 looks like: Login Screen Your Chats Smooth animations are now everywhere: Custom Themes If you're looking for an alternative design, Telegram Desktop also supports customized themes. Anyone can make a theme for Telegram Desktop. This theme, for example, changes green outgoing messages to blue: Blue theme And here’s a third-party night mode theme: Dark theme What Else Makes Telegram Desktop Cool? The best thing about Telegram Desktop is that it automatically syncs messages from your phone with your computer using Telegram’s encrypted cloud. Just install it and log in to your account! All your messages, documents, photos and videos will be synced for you from the secure cloud. Thanks to Cloud Drafts, you can even start typing on your phone, then continue on your desktop when you reach home or work. Who needs email now? Telegram Desktop is many times faster and handles attachments like a pro. Just share your t.me/username with those who want to reach you. January 11, 2017 The Telegram Team P.S. For desktop experiences, we also have Telegram Web and Telegram Mac, but our founder insists that Telegram Desktop is the way to go on all platforms. P.P.S. If you're looking for an easy way to get your emails right in Telegram, check out this Gmail bot. Helps one to stay in touch with those who insist on using antique methods of communication. https://telegram.org/blog/desktop-1-0
  12. Πρωταπριλιά σήμερα και όπως κάθε χρόνο, έτσι και φέτος σχεδόν όλες οι εταιρείες που μας απασχολούν με τεχνολογικές (και μη) ειδήσεις έχουν αφιερώσει λίγο από τον πολύτιμο χρόνο τους για κάνουν τον σχετικό χαβαλέ. Μία από τις πιο ενδιαφέρουσες φάρσες είναι η προσθήκη του Ms. Pac-Man στην υπηρεσία Google Maps. Με μια επίσκεψη στο maps.google.com θα δείτε κάτω αριστερά το σχετικό εικονίδιο με την γνώριμη (τουλάχιστον για τους παλαιότερους) φράση “insert coin”. Πατώντας εκεί, θα σας ανοίξει ένας τυχαίος πραγματικός χάρτης και θα δείτε τη γνώριμη κίτρινη μπαλίτσα και τα 4 φαντασματάκια σε ένα πλήρως λειτουργικό παιχνίδι. http://www.techgear.gr/google-maps-ms-pac-man-119850/
  13. Κάθε χρόνο έχουμε συνηθίσει οι μεγάλες εταιρείες τεχνολογίας να εκμεταλλεύονται τη μέρα της Πρωταπριλιάς με "φάρσες" που συζητιούνται πολύ. Ειδικά η Google είναι πρωτοπόρα σε αυτό και φέτος επανέρχεται, αρχικά με... Pac-Man στο Google Maps. Καθώς η 1η Απριλίου έχει ξεκινήσει να έρχεται σε περιοχές του πλανήτη, τώρα ανοίγοντας το Google Maps App από το PC ή το smartphone μας, μπορούμε να παίξουμε... Pac-Man! Ωστόσο, κάποιοι θυμούνται ότι κάτι παρόμοιο είχαμε κάνει και την Πρωταπριλιά του 2015 στο Maps και ζητούν κάτι πιο πρωτότυπο από την εταιρεία. Σίγουρα θα δούμε κι άλλες φάρσες τις επόμενες ώρες όμως (από Google και όχι μόνο), οπότε απλά προετοιμαστείτε... https://www.digitallife.gr/paikste-pac-man-sto-google-maps-98312
  14. Usually, I just use rsync to keep files in sync, but this runs through all of the files. Starting on server #1, inside the rancid base directory (/var/lib/rancid for me), with $LIST_OF_GROUPS from /etc/rancid/rancid.conf, using ssh with port 2022 , $REMOTE = DNS name of remote server : for i in $LIST_OF_GROUPS ; do echo $i ; rsync -n -i -e 'ssh -p 2022' /var/lib/rancid/$i/router.db $REMOTE:/var/lib/rancid/$i/router.db ; done To run vimdiff to see or manually sync a single file: vimdiff /var/lib/rancid/ABC/router.db scp://$REMOTE_SRV:2022//var/lib/rancid/ABC/router.db Note that this uses 2022 as an alternate ssh port for scp (as called by vimdiff). The automated sync operation is actually done from jenkins. This is probably not the ideal formula, but for self-documnetation purposes, here it is: crontab on server1 to remote server2. (REMOTE_SRV = server2’s DNS name) to copy files from server1 to remote server2. @daily export JENKINS_HOME=http://JENKINS.brunhilda.edu:8080 ; java -jar /usr/share/jenkins/external-job-monitor/java/jenkins-core-*.jar "rancid_sync srv1 to srv2" rsync --exclude 'configs' --exclude 'bin' --exclude 'logs' --exclude 'CVS' --compress --itemize-changes -Cavh -e 'ssh -p 2022' --checksum $REMOTE_SRV:/var/lib/rancid/ /var/lib/rancid/ http://www.handsomeplanet.com/archives/325
  15. NickTheGreek

    HTTP/2

    Apache 2.4.12 supports HTTP/2 via the module mod_h2,[54] although appropriate patches must be applied to the source code of the server in order for it to support that module. As of Apache 2.4.17 all patches are included in the main Apache source tree, although the module itself was renamed mod_http2.[55] Old versions of SPDY were supported via the module mod_spdy,[56] however the development of the module has stopped
  16. NickTheGreek

    HTTP/2

    HTTP/2 (originally named HTTP/2.0) is a major revision of the HTTP network protocol used by the World Wide Web. It was developed from the earlier experimental SPDY protocol, originally developed by Google.[1] HTTP/2[2] was developed by the Hypertext Transfer Protocol working group httpbis (where bis means "second") of the Internet Engineering Task Force.[3] HTTP/2 is the first new version of HTTP since HTTP 1.1, which was standardized in RFC 2068 in 1997. The Working Group presented HTTP/2 to IESG for consideration as a Proposed Standard in December 2014,[4][5] and IESG approved it to publish as Proposed Standard on February 17, 2015.[6][7] The HTTP/2 specification was published as RFC 7540 in May 2015.[8] The standardization effort was supported by Chrome, Opera, Firefox,[9]Internet Explorer 11, Safari, Amazon Silk, and Edge browsers.[10] Most major browsers added HTTP/2 support by the end of 2015.[11] According to W3Techs, as of January 2017, 12.7% of the top 10 million websites supported HTTP/2.[12] https://en.wikipedia.org/wiki/HTTP/2
  17. 1. The first email was sent by Ray Tomlinson to himself in 1971. "The test messages were entirely forgettable. . . . Most likely the first message was QWERTYIOP or something similar," he said. 2. The first domain name ever registered was Symbolics.com on March 15, 1985. Now it serves as a historic site. 3. The first website was dedicated to information about the World Wide Web and went live on August 6, 1991. Here's the url: http://info.cern.ch/hypertext/WWW/TheProject.html. 4. The first picture ever uploaded on the web was posted by Tim Berners-Lee (inventor of the World Wide Web) on behalf of a comedy band called Les Horrible Cernettes. 5. The first AOL Instant Message was sent by Ted Leonsis to his wife on Jan. 6, 1993. It read, "Don't be scared ... it is me. Love you and miss you." His wife replied, "Wow ... this is so cool!" Leonsis later became AOL's Vice Chairman. 6. Joe McCambley ran the first banner ad ever online. It went live in October 1994 on HotWired.com and it promoted 7 art museums, sponsored by AT&T. 7. The first item sold on eBay (back then it was AuctionWeb) was a broken laser pointer for $14.83 in 1995. The man who bought it told founder Pierre Omidyar he collected broken laser pointers. 8. The first book purchased on Amazon was Douglas Hofstadter's Fluid Concepts and Creative Analogies: Computer Models of the Fundamental Mechanisms of Thought in 1995. 9. The first sentence uttered on Skype was in Estonian in April 2003 by a member of the development team. It was 'Tere, kas sa kuuled mind?' or "Hello, can you hear me?" in English. 10. Mark Zuckerberg was the first person on Facebook with ID number 4 (the first three Facebook accounts were used for testing). The first non-founder to join Facebook was Arie Hasit (below), who is now in Israel studying to be a rabbi. 11. The first YouTube video posted was posted by co-founder Jawed Karim at the San Diego Zoo. It was uploaded on April 23, 2005 and has been watched nearly 10 million times. 12. The first tweet was written by co-founder Jack Dorsey on March 21, 2006.
  18. Μπορεί να είναι η περιοχή ή κάτι άλλο, θα πρότεινα να δείς ακόμη και με γείτονες σου τι γίνεται αν έχεις τρόπο να μάθεις ή καλύτερα, δες τι βγάζει εκεί γύρω ο Υπερίωνας: http://hyperiontest.gr/
  19. δεν είναι κάτι δικό μου, απλά δούλευα πρόσφατα πάνω του και μου έκανε εντύπωση το μέγεθος του περιεχομένου ( τόσο σε όγκο όσο και σε αριθμό αρχείων, ειδικά στατικών εικόνων ) αλλά και η συνολική παρουσία της ιστοσελίδας http://didee.gr/
  20. φοβερή ιστορία Hackers Stole My Website…And I Pulled Off A $30,000 Sting Operation To Get It Back True story. 3am, on the phone with the company that hosts my site For several days not so long ago, RamshackleGlam.com — the domain name that I have owned and operated since March of 2010 — did not belong to me, but rather to a man who goes by the name “bahbouh” on an auction website called Flippa, and who was attempting to sell off the site to the highest bidder (with a “Buy It Now” price of $30,000.00). He promised the winner my traffic, my files, and my data, and suggested that I was available “for hire” to continue writing posts (alternatively, he was willing to provide the winner with “high-quality articles” and “SEO advice” to maintain the site’s traffic post-sale). I learned that my site was stolen on a Saturday. Three days later I had it back, but only after the involvement of fifty or so employees of six different companies, middle-of-the-night conferences with lawyers, FBI intervention, and what amounted to a sting operation that probably should have starred Sandra Bullock instead of…well…me. Of course I’ve heard of identity theft, and of cyber hacking, but honestly, my attitude towards these things was very much “it could never happen to me.” And even if it did…I didn’t exactly understand why it was such a huge deal. Couldn’t you just explain to people what had happened, prove who you were, and sort it all out? We live in such a highly documented world, it seemed completely impossible to me that someone could actually get away with pretending to be someone else with any real consequences beyond a few phone calls and some irritation. It’s much, much worse — more threatening, more upsetting, and more difficult (if not impossible) to fix — than I’d ever imagined. I found out about the hacking from my father. His friend Anthony (who runs a web development and consulting company called ThoughtBox) had been surfing around on Flippa and had — in an impossibly lucky coincidence — noticed that my site was up for auction, with what appeared to be a highly suspicious listing. Suddenly, I remembered the email I had gotten the day before — an email that I had disregarded as spam — from someone “interested in the purchase” of my “weblog.” I remembered the notification from YouTube that someone had accessed my account from a different location — a notification I had ignored, assuming that I had logged in on a mobile device or that my husband had accidentally logged into my account instead of his own. But even after I saw the listing, I didn’t panic: this seemed like something that could be fixed with a couple of emails. Except the auction site was located in Australia and didn’t appear to have a phone number, and when I sent an email with a scanned ID and proof of ownership what I got back was a form letter. And when I called HostMonster, the site I pay to operate my website, I discovered that I was no longer the owner of my site: someone had used their email confirmation system to authorize the transfer of my domain name into a private account at GoDaddy (another web registrar service of whom I’m also a client). The auction listing for my website. Why is this a big deal? If you have a business that depends on a URL, you understand why this was such upsetting news: With control over my website’s domain name, a hacker would be able to take the site down, or redirect it elsewhere. Further, it was later verified that the hacker had control over all of the site’s content, as well; he could have just rerouted everything I’ve ever written to any location he wanted. Ramshackle Glam may be “just” a lifestyle blog about things like parenting and fashion and decor…but it’s also a site that I’ve spent five years of my life building, and the idea of it falling into the hands of someone with malicious intent was heartbreaking. I could switch to a new URL and export a copy of my content (which I do back up), but that would result in the loss of a substantial amount of traffic. The website is my primary source of income, and with a house, two children, a book coming out, and a husband in business school, this was not a joke. The loss of my URL had the potential to be devastating for my business and for my family in a very real way. So what did I do? The events of the next few days were complicated, so rather than go through them chronologically I’m going to explain how each path I took ended up panning out (I’m going into detail so that I can be as much help as possible to anyone who goes through this themselves). 1. I tried to resolve the situation directly with GoDaddy and HostMonster. This did not work. From Sunday through Tuesday, I spent most of the day (and much of the night) on the phone with GoDaddy, HostMonster, or both at the same time, and nearly every person I spoke with gave me the same response: “Sorry, can’t help you.” HostMonster maintained that because they no longer controlled the domain name, there was nothing they could do. GoDaddy maintained that because the account was private and the person had obtained ownership of the domain through a transfer from HostMonster, there was nothing they could do. What finally made a difference: I cited ICANN’s policy on Domain Name Dispute Resolution.* This got my case upgraded, but it did not result in action. Here’s why: the legal department at HostMonster informed me that in order for them to initiate a transfer dispute that would result in GoDaddy releasing the domain back to me, their “internal investigation” would have to turn up evidence that they had done something wrong in releasing the site. In other words, they would have to admit that they had screwed up…which would in turn open them up to a lawsuit. Needless to say, I never heard from the legal department again. Despite the fact that everyone seemed clear on the fact that I owned my website and that it had been transferred without my authorization, nothing was going to be done unless I initiated a time-consuming and costly lawsuit that, in any case, would not result in action quick enough to save my domain name from being sold. So that avenue came to an end. 2. I called the FBI. This was a major step in the right direction. The morning after I found out about the unauthorized transfer, I also called the FBI. I felt silly and dramatic making the phone call, but the reality is that this is an international cyber crime issue, and that’s FBI territory. And this is my business. It’s how I support my family, and it may be a “small matter” in the grand scheme of things, but it is not a small matter to me. And let me tell you: of all the surprises I’ve had over the past week or so, most surprising of all has been the FBI. They responded immediately, with follow-up phone calls and emails, an in-person interview with two special agents at my own home within 24 hours, and a follow-up visit from two agents yesterday. Beyond that, each and every agent I have interacted with over the past week has been, without fail, compassionate, thoughtful, invested, respectful, and committed to action…in addition to treating me not like a case number, but like a human. What I expected was to leave a message with a general mailbox and at some point receive a form letter; I certainly did not expect to see an active investigation opened immediately. I’m not going to write more about the investigation because it’s still ongoing (although I did ask for and receive permission to write about this), but I think it’s important to say how absolutely blown away I have been by the FBI’s response. 3. I tried to regain control by dealing directly with the “seller”. This worked, but not without considerable drama. While all of the above was going on, I was also working to regain control over the site directly from the individual who was trying to sell it. I didn’t want to contact the “seller” directly, because I felt that if he thought the “real” owner of the site was aware of the sale, he would try to extort more money. So I asked Anthony — the person who had found the original listing, and who had an active account with a positive history on Flippa — to DM “bahbouh” to see if he was interested in a “private sale”. After some back-and-forth we reached an agreement, and it was decided that a third-party money-transfer website (Escrow.com) would be used to make the sale: the money would only be released to the seller upon confirmation that the domain name had been transferred. This appeared to be going smoothly until Tuesday night, when the seller suddenly demanded that the funds be released immediately (prior to receipt of the website). When we pushed back, he announced that he was selling it to someone else: “Sorry, bye.” So here was my thought process: if we did not release the money to the seller, we were guaranteed to not get the website. If we did release the money to him, there was a possibility that he would take the money and run, and also a possibility that he would deliver the site as promised. It wasn’t a gamble I wanted to take…but I didn’t see any option. And so I authorized the wire transfer. I spent twenty minutes sitting in front of the dummy GoDaddy account I had created to receive the domain name from the seller, waiting to see whether I was out thousands of dollars and a domain name, or just thousands of dollars. And then it came through. I immediately transferred the domain into a different account and placed it (and all of my other domain names) on what amounted to lockdown. And then I called the wire transfer company and placed a stop on the payment. The end result RamshackleGlam.com is back in my possession, thanks to a number of people who dedicated hours (in some cases days) out of their lives to doing whatever they could to help me. My other accounts — bank accounts, et cetera — have been secured. I don’t have my money back yet, but the man who stole my site from me doesn’t have it, either, and won’t be getting it, ever. And that’s an ending I’m pretty damn thrilled with. So why am I still angry? Of course I’m angry with the person or people who stole the site, but that’s out of my hands. The reason I’m writing this post is to let people know that this really can happen — to anyone — and to offer suggestions for how to minimize the chances that it will happen to you (below), but beyond that, I’m writing this post because this incident made me very, very angry at GoDaddy and HostMonster. And I want you to know why. No one at either company questioned my statement (supported by written proof) that the website belonged to me. No one doubted that it had been transferred without my authority. And yet I had to spend days — days during which the hacker could have done virtually anything he wanted — trying to reach one single person who was able to do anything, because the support staff and supervisors I spoke with (who had to have numbered fifty or more) were completely uninformed as to how to handle this situation beyond saying, “Jeez, that sucks. Can’t help you.” HostMonster and GoDaddy screengrabs And once I reached people who could help me — who could literally make a single phone call or push a single button and return my property to me (or simply freeze it so that it could not be sold or destroyed) — they would not. They hid behind their legal departments and refused to do anything, knowing full well that their inaction would force me to either interact with and pay off a criminal, or lose an essential component of my business. And hackers know that these companies will do this. They rely on it. There is a serious problem when a criminal enterprise not only exists “despite” a company’s policies, but actually thrives as a direct result of that company’s prioritization of their own interests over the security of the clients they allegedly “protect”. Do I understand why companies like HostMonster and GoDaddy are focused on protecting themselves against lawsuits? Of course I do. But the fact is that they not only do not “help” their customers, but actively contribute to creating situations that threaten small businesses and the families that they support. And these companies know that when they stonewall clients whose property has obviously been stolen that these clients will have no other recourse than to pay off criminals or watch their businesses — sometimes their very lives — collapse. They know that by standing in the way of immediate action they create the very environment that these criminals depend upon to perpetuate their business model. And they do nothing. This has to change. My opinion, for what it’s worth Support personnel at hosting companies should be made intimately familiar with ICANN regulations involving domain disputes, and should be able to initiate a plan of action the first time a client makes them aware of a situation, not after hours and hours of repeated calls. Further, the establishment of a TEAC** should result in an immediate freeze on the account in dispute until the situation has been resolved. This should not require an admission of culpability on the part of any parties; simply an acknowledgement that a dispute exists and an awareness that while the dispute exists the domain must be held safe from sale or transfer. What you can do to reduce the chances that this will happen to you: Have a really, really good password, and change it often. Your password should not contain “real” words (and definitely not more than one real word in immediate proximity, like “whitecat” or “angrybird”), and should contain capital letters, numbers and symbols. The best passwords of all look like total nonsense. If possible, use a separate computer (an old one or a cheap one purchased for this purpose) for things like banking; if your family computer is the same one that you use for bank transactions you risk having your kids click on a bad link that results in a hacking. Turn off your computer and personal devices when they’re not in use. Have antivirus software on your computer (but remember that virus scans only catch 30–40% of viruses, so unfortunately a “clean” check doesn’t necessarily mean that you’re safe). Purchase CyberRisk Insurance (learn more about it here; it basically protects businesses from cyber attacks and data breaches. But if it does happen to you, here’s what to do: Begin taking careful notes (and screenshots) immediately. Don’t delete any emails or other information; it could all be important later on. Immediately change all of your passwords (including — but not limited to — domain registrar, website hosting, website login information, email, bank accounts, wireless home electronics, and Apple ID) according to the rules stated below. I changed mine every few hours while this situation was still up in the air, and am continuing to change them every few days for the time being. Contact the registrar(s), citing the ICANN policy below, and see if together you can arrive at a speedy resolution. Don’t be surprised if you find yourself running into dead ends. Make sure to inquire about “filters” and “rules” that may have been placed on your email (basically, any kind of device that the hackers may have placed to forward emails, et cetera). Contact appropriate law enforcement (I contacted the FBI because it appeared to be an international issue, and was at the very least an interstate issue because Escrow.com is located in California, and I’m in New York). Note: Every situation is different, and I can’t wholeheartedly recommend the steps that I took that ultimately resulted in me regaining control over my domain name largely because they involved interacting with criminals. Obviously that isn’t ideal, and can have unpredictable consequences. (Although my husband says that he would like it to be known that he thinks I’m a huge badass. While this is ordinarily very far from the truth, in this specific instance…I’ll take it.) The End. (That was long. Thanks for reading.) *** *** *** *ICann.Org is the Internet Corporation for Assigned Names and Numbers (ICANN) is responsible for managing and coordinating the Domain Name System (DNS). ICANN’s policy on Domain Name Dispute Resolution essentially states that in the case of a domain dispute, the Losing Registrar (the registrar that maintained possession of the domain name pre-transfer, as opposed to the “Winning Registrar”, who maintains possession of the domain name post-transfer). must immediately establish a Transfer Emergency Action Contact (“TEAC“) in an effort to get the ball rolling in the direction of resolution right away). Once I had this information, my case was immediately upgraded. **TEAC: A contact that is established by ICANN and used by other registrars and ICANN if there is a need to quickly address issues with domain transfers between two registrars. The contact must respond to inquiries within four hours, though final resolution may take longer. https://medium.freecodecamp.com/hackers-stole-my-website-and-i-pulled-off-a-30-000-sting-operation-to-get-it-back-143d43ee3742#.kzqd38i72
  21. Hello xXxRevolutionxXx,

    Welcome to designhost.gr.

    Feel free to browse our community accessing all sorts of information and getting to know our members.

    Do not hesitate to ask anything in our forums.

    designhost.gr

  22. Καλώς ήρθατε στο designhost.gr.

    Νιώστε ελεύθερα και πλοηγηθείτε στην κοινότητα μας όπου μπορείτε να βρείτε διάφορες πληροφορίες και να γνωριστείτε με τα υπόλοιπα μέλη.

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

  23. Security researchers have discovered a Zero-Day vulnerability in the popular Apache Struts web application framework, which is being actively exploited in the wild. Apache Struts is a free, open-source, Model-View-Controller (MVC) framework for creating elegant, modern Java web applications, which supports REST, AJAX, and JSON. In a blog post published Monday, Cisco's Threat intelligence firm Talos announced the team observed a number of active attacks against the zero-day vulnerability (CVE-2017-5638) in Apache Struts. According to the researchers, the issue is a remote code execution vulnerability in the Jakarta Multipart parser of Apache Struts that could allow an attacker to execute malicious commands on the server when uploading files based on the parser. "It is possible to perform an RCE attack with a malicious Content-Type value," warned Apache. "If the Content-Type value isn't valid an exception is thrown which is then used to display an error message to a user." The vulnerability, documented at Rapid7's Metasploit Framework GitHub site, has been patched by Apache. So, if you are using the Jakarta-based file upload Multipart parser under Apache Struts 2, you are advised to upgrade to Apache Struts version 2.3.32 or 2.5.10.1 immediately. Exploit Code Publicly Released Since the Talos researchers detected public proof-of-concept (PoC) exploit code (which was uploaded to a Chinese site), the vulnerability is quite dangerous. The researchers even detected "a high number of exploitation events," the majority of which seem to be leveraging the publicly released PoC that is being used to run various malicious commands. In some cases, the attackers executed simple "whoami" commands to see if the target system is vulnerable, while in others, the malicious attacks turned off firewall processes on the target and dropped payloads. "Final steps include downloading a malicious payload from a web server and execution of said payload," the researchers say. "The payloads have varied but include an IRC bouncer, a DoS bot, and a sample related to the Bill Gates botnet... A payload is downloaded and executed from a privileged account." Attackers also attempted to gain persistence on infected hosts by adding a binary to the boot-up routine. According to the researchers, the attackers tried to copy the file to a benign directory and ensure "that both the executable runs and that the firewall service will be disabled when the system boots." Both Cisco and Apache researchers urge administrators to upgrade their systems to Apache Struts version 2.3.32 or 2.5.10.1 as soon as possible. Admins can also switch to a different implementation of the Multipart parser. http://thehackernews.com/2017/03/apache-struts-framework.html
×