127.0.0.1 rad.msn.com
127.0.0.1 apps.skype.com
| <?php | |
| // affiliate_id,offer_id,payout,revenue,datetime,is_adjustment | |
| $data = []; | |
| $months = [ | |
| '2017-10-17 23:55:55' => 11000, | |
| '2017-11-17 23:55:55' => 12000, |
| # https://marmelab.com/blog/2014/09/10/make-docker-command.html | |
| # If the first argument is "composer"... | |
| ifeq (composer,$(firstword $(MAKECMDGOALS))) | |
| # use the rest as arguments for "composer" | |
| COMPOSER_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) | |
| # ...and turn them into do-nothing targets | |
| $(eval $(COMPOSER_ARGS):;@:) | |
| endif | |
| composer: |
| ################ copy/replace file to ~/.bash_aliases | |
| ################ Tuning bash ########################################################################################### | |
| # Command line history | |
| export HISTCONTROL=ignoredups:ignorespace | |
| export HISTFILESIZE=10000000 | |
| export HISTSIZE=1000000 | |
| shopt -s histappend # Append to the history file, don't overwrite it | |
| shopt -s checkwinsize # Check the window size after each command and, if necessary, update the values of LINES and COLUMNS. |
127.0.0.1 rad.msn.com
127.0.0.1 apps.skype.com
| -Xms600m | |
| -Xmx1g | |
| -XX:MaxPermSize=350m | |
| -XX:ReservedCodeCacheSize=240m | |
| -XX:+UseCompressedOops | |
| -Xmx4g |
| if [ -f ~/.bashrc ]; then . ~/.bashrc; fi |
| 0 0 * * * /some/path/to/a/file.php > $HOME/`date +\%Y\%m\%d\%H\%M\%S`-cron.log 2>&1 | |
| jbzoo items:items-import -vvv >> /home/vsem/logs/cron-jbzoo/`date +\%Y-\%m-\%d_\%H-\%M-\%S`-cron.log 2>&1 | |
| * * * * * /usr/local/bin/php -c /etc/php.ini ~/cli/jbzoo/vendor/jbzoo/console/bin/jbzoo items:items-import -vvv >> /home/vsem/logs/cron-jbzoo/`date +\%Y-\%m-\%d_\%H-\%M-\%S`-cron.log 2>&1 |
| Я помню правило “хочешь запостить вакансию — приложи к ней что-нибудь интересное” :). Я расскажу историю одного тестового задания. Немного длинную, но, надеюсь, интересную. | |
| У нас в Ecwid все тестовые задания для инженеров выложены открыто на GitHub вот тут — https://github.com/Ecwid/new-job. Можно просто начать делать любую понравившуюся задачу никого не предупреждая, а потом, когда сами будете довольны результатом, поделиться им со мной. | |
| Одно из первых заданий что я придумал был консольный качальщик файлов по HTTP. Оно очень простое и придумывал я его именно с такой мыслью. Пусть, рассуждал я, пока такое простое повисит, а потом-то я, конечно, добавлю крутые задания. Потом-то я ого-го что выдумаю! Такие крутые тестовые выложу, что все ахнут и немедленно побегут их делать, а этот примитивный качальщик я куда-нибудь запрячу и никому больше не буду показывать. Как-то так я тогда думал. | |
| Качальщик нужно сделать действительно очень примитивный. Судите сами — ты ему список ссылок в текстовом файле, а он скачивае |
| <?php | |
| if(!function_exists('exec')) die('exec function is not available on this server'); | |
| if(!$unzip_command = exec('/usr/bin/which unzip')) die(); | |
| if(!$dir_handle = opendir(getcwd())) die ('Can\'t open dir'); | |
| while(false != ($files = readdir($dir_handle))){ | |
| if($files != '.' && $files != '..'){ | |
| if(preg_match('/.\.zip/',$files)){ | |
| exec("$unzip_command $files",$output); | |
| echo '<b>Unzipping ',$files,' </b><br>'; |
| const dump = (vars, label) => console.log(label ? label : 'dump', ':', vars); | |
| // Or stringify | |
| const dump = (vars, label = 'dump', prettyPrint = false) => { | |
| if (prettyPrint) { | |
| console.log(`${label}:`, JSON.stringify(vars, null, 3)); | |
| } else { | |
| console.log(`${label}:`, vars); | |
| } | |
| }; |