danforth

danforth
Рейтинг
153
Регистрация
18.12.2015
mendel:
В 30 строк написать класс или набор функций для проверки целостности файлов на сайте. Сообщаем некие настройки вроде пути что проверять, сообщаем где хранится информация о "эталонном" содержимом, возможно другие полезные данные, например сигнатуры эвристики (регулярки можно!), получаем изменившиеся, новые и/или подозрительные файлы.
Три основных функции - создать файл-эталон (инкрементарным предпочтение), быстрая проверка, медленная проверка.
ПС: сам еще не писал. 30 строк как ориентир, 31 или 9 строк тоже пойдут).

http://pastebin.com/zBgwgMH5

Накидал тут, поржать ради, принимает: исходную папку, файл с md5 хешами, булев флаг для создания файла.

Олимпиады на краткость кода не мое. Пока писал этот кусок, испытывал боль от процедурщины и PHP. Интересно что другие предложат.

MySQL дефолтный конфиг? Скиньте ваш my.cnf сюда. Ещё желательно знать, что из себя представляет ваши базы: количество баз, количество таблиц, количество строк в самой бОльшей из таблиц, движок (InnoDB, myisam). Движок не обновлялся, плагины к нему? Возможно, появился какой-то тяжелый запрос?

А ещё top в пике скиньте. Можно попробовать siege нагрузить, чтобы долго не ждать.

А ещё вопрос: как вы меряете трафик, не аналитикой/метрикой хоть?

Милторг заварил тут кашу с регулярками, а все сидят и голову ломают. А тем временем у милторга репутация перешла из отрицательной в положительную, и он поднял свою ставку на 50%. Кажется кто-то медленно но уверенно эволюционирует, со скоростью 30 символов в месяц.

SAntone:
Мы на 1 ядре запускали тесты, у Вас же их 4, сделайте для виртуалки 1 ядро и повторите тест.

Как нибудь попозже запилю, а то тест не быстрый оказался.

Хз зачем, но сделал на свой виртуалке работающей в Windows 10 x64. 🍿 Виртуалка через VirtualBox + Vagrant (SMB) с настройками 4 ядра и 4ГБ оперативной памяти.


========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)

System: ubuntu-xenial: GNU/Linux
OS: GNU/Linux -- 4.4.0-62-generic -- #83-Ubuntu SMP Wed Jan 18 14:10:15 UTC 2017
Machine: x86_64 (x86_64)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz (6983.8 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 1: Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz (6983.8 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 2: Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz (6983.8 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
CPU 3: Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz (6983.8 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
14:29:38 up 5 min, 1 user, load average: 0.03, 0.14, 0.08; runlevel 2017-02-17

------------------------------------------------------------------------
Benchmark Run: Пт фев 17 2017 14:29:38 - 14:57:40
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables 43325937.6 lps (10.0 s, 7 samples)
Double-Precision Whetstone 4501.9 MWIPS (9.7 s, 7 samples)
Execl Throughput 4461.1 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 1331753.8 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 371765.1 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 3272765.8 KBps (30.0 s, 2 samples)
Pipe Throughput 2521308.0 lps (10.0 s, 7 samples)
Pipe-based Context Switching 237182.0 lps (10.0 s, 7 samples)
Process Creation 11142.7 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 13560.2 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 3971.9 lpm (60.0 s, 2 samples)
System Call Overhead 4418185.0 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 43325937.6 3712.6
Double-Precision Whetstone 55.0 4501.9 818.5
Execl Throughput 43.0 4461.1 1037.5
File Copy 1024 bufsize 2000 maxblocks 3960.0 1331753.8 3363.0
File Copy 256 bufsize 500 maxblocks 1655.0 371765.1 2246.3
File Copy 4096 bufsize 8000 maxblocks 5800.0 3272765.8 5642.7
Pipe Throughput 12440.0 2521308.0 2026.8
Pipe-based Context Switching 4000.0 237182.0 593.0
Process Creation 126.0 11142.7 884.3
Shell Scripts (1 concurrent) 42.4 13560.2 3198.2
Shell Scripts (8 concurrent) 6.0 3971.9 6619.9
System Call Overhead 15000.0 4418185.0 2945.5
========
System Benchmarks Index Score 2133.8

------------------------------------------------------------------------
Benchmark Run: Пт фев 17 2017 14:57:40 - 15:25:47
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables 154360730.9 lps (10.0 s, 7 samples)
Double-Precision Whetstone 16904.7 MWIPS (10.1 s, 7 samples)
Execl Throughput 21659.4 lps (29.6 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 1398547.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 382035.9 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 4153869.9 KBps (30.0 s, 2 samples)
Pipe Throughput 9624552.3 lps (10.0 s, 7 samples)
Pipe-based Context Switching 1260509.3 lps (10.0 s, 7 samples)
Process Creation 31208.0 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 32833.9 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 4800.4 lpm (60.0 s, 2 samples)
System Call Overhead 11474707.7 lps (10.0 s, 7 samples)

System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 154360730.9 13227.1
Double-Precision Whetstone 55.0 16904.7 3073.6
Execl Throughput 43.0 21659.4 5037.1
File Copy 1024 bufsize 2000 maxblocks 3960.0 1398547.1 3531.7
File Copy 256 bufsize 500 maxblocks 1655.0 382035.9 2308.4
File Copy 4096 bufsize 8000 maxblocks 5800.0 4153869.9 7161.8
Pipe Throughput 12440.0 9624552.3 7736.8
Pipe-based Context Switching 4000.0 1260509.3 3151.3
Process Creation 126.0 31208.0 2476.8
Shell Scripts (1 concurrent) 42.4 32833.9 7743.8
Shell Scripts (8 concurrent) 6.0 4800.4 8000.7
System Call Overhead 15000.0 11474707.7 7649.8
========
System Benchmarks Index Score 5142.7

Под проекты: PHPStorm

Под быструю правку: Visual Studio Code

Иногда vim.

Хожу-брожу, в контексте этой задачи - да, сработает. Но если появится ещё один уровень глубины, то все равно будет многомерный массив на выходе.

Хожу-брожу,

Хожу-брожу:
На выходе нужно:
Array
(
[0] => рисунок
[1] => картинка
[2] => вывеска
[0] => специи
[1] => куркума
[0] => шоколад
[1] => десерт
[2] => печенье
[3] => сыр
[4] => сок
)

Так не сделаете, потому что ключи должны быть уникальными.

Второй вариант возможен, вот код:

<?php

$food = array(
array(
"Мандарины",
"Апельсины",
"Бананы",
"Киви",
),
array(
"Помидоры",
"Перец",
"Капуста",
),
array(
"Лапша",
"Остальное",
),

);

$output = array();

function getValuesRecursive($array, &$output) {
foreach ($array as $key => $value) {
if (!is_array($value)) {
array_push($output, $value);
} else {
getValuesRecursive($value, $output);
}
}
}

getValuesRecursive($food, $output);

echo '<pre>';
var_dump($output);

Основная суть в функции getValuesRecursive, как видно из названия, она рекурсивная. Она вызывает сама себя при определенных условиях. Почитайте про рекурсию.

borisd, есть всякие трекинг программы, которые делают скриншоты раз в n минут, архивируют их и высылают на почту заказчику. Но я, например, часто обсуждаю задачи с заказчиком часами, при этом я не пишу это в работу. Я часто консультирую абсолютно бесплатно, причем вникаю в проблему. Мне приятно помогать людям. Но если меня заставят пользоваться такой программой, то я начну звереть, и вычислять время работы до наносекунд. А ещё подыщу другого заказчика, с кем построю нормальные доверительные отношения. Мне не столько важно зарабатывать, сколько важно, чтобы отношения с работодателем были позитивные и было уважение друг к другу. И это при том, что я всегда занижаю цену задачи, кроме тех случаев, когда работа заняла 10 минут, я могу округлить её

Да, будь я работодателем, я бы потребовал от заказчика вилку цен, чтобы знать, на что рассчитывать по деньгам, но платил бы я все равно по часам, потому что если программист назвал 50$ баксов за проект, то он уже включил туда правки. Если брать деньги по часам, то если правок не будет, может выйти и дешевле. Но это если программист с совестью, как делают другие - хз, я всегда пишу чуть меньше чем есть на самом деле.

Работал около года копирайтером на одном сайте по тематики автоспорта. Не могу сказать что работал за деньги - мне ничего не платили. Работал там, потому что очень нравится автоспорт. Моя задача состояла в том, чтобы:

а) переводить статьи забугорных изданий

б) писать и делится своими знаниями

в) набираться знаний от владельца ресурса

Я с лихвой покрывал 97% того, что от меня требовалось. Я один из первых, кто рассказывал об эксклюзивных автомобилях, многие детали не только переводил и разъяснял исходя из собственных знаний, зачастую вел беседу с производителем суперкаров (например, Radical, Zenvo). Скажу так: такой контент востребован, но он должен быть рассказан самим профессионалом. Другими словами: материал должен подготавливать ваш муж, после чего вы производите коррекцию (пунктуация, слог, и т.д.), публикуете статью, собираете вопросы и фидбек, и корректируете статью заново. В таком ключе, успех возможен. Экспертное мнение сейчас ценится. Только это должно быть реально экспертное мнение.

Всего: 1540