Задать вопрос
  • Какие линтеры для PHP использовать в precommit hook?

    muhammad_97
    @muhammad_97
    PHP-разработчик
    Идеальный вариант: https://github.com/FriendsOfPHP/PHP-CS-Fixer + мануал как все это дело настроить: https://coderwall.com/p/b7nova/phpunit-git-pre-com... - здесь приводится пример с PHP Unit, но думаю переделать под себя не составит труда
    Ответ написан
    1 комментарий
  • Какие линтеры для PHP использовать в precommit hook?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Ответ написан
    Комментировать
  • Каковы Возрастные ограничения в программировании?

    hronik87
    @hronik87
    Обитаю в 1С-Bitrix
    Раз в день стабильно появляется похожий вопрос. Мне 28, год назад ничего не знал ни о HTML, ни о CSS, ни о JavaScript, ни о PHP. Сегодня работаю в хорошей компании, верстка у меня на твердую 4, JavaScript на 3+(библиотека JQuery в основном, но могу и на чистом написать что-нибудь полезное), PHP начал осваивать месяц назад, но уже есть довольно неплохие результаты. Было ли мне сложно в самом начале? Да! Я не знал ничего об этой сфере. Спал по 4 часа в сутки прямо возле компьютера, шаблон разрывало и я начал уже вслух разговаривать с собой. У меня не стояло выбора поучить сегодня или нет. У меня стоял выбор пойти поссать и дальше учить или все же потерпеть, а потом уже сходить когда невмоготу будет. И я сейчас в той сфере которая мне нравится, я постоянно учусь и я не остановлюсь. Так что если ты уверен, что это твое, то любыми правдами и неправдами учи, старайся, вникай. И все получится)
    Ответ написан
    14 комментариев
  • Из чего состоит окружение продвинутого php разработчика?

    nonlux
    @nonlux
    Поправил ответ, так будет логичнее.
    Ниже приведены инструменты, которые использую лично я и причины почему.

    1. docker-окружение
    (в 90% случаев для веб-разработки достаточно php -S 0.0.0.0:8000)
    виртуальные машину становятся нужны:
    - когда надоест переустанавливать хост-систему из-за обилия хлама
    - когда работаешь с несколькими проектами имеющие специфические (разные) настройки окружения(php, web-сервер, база)
    - когда надоест решать проблемы в команде из-за того что по разному настроено окружение

    2. git - система контроля версий
    Помнить что ты и когда изменял, должен не человек, а машина.
    Это необходимо:
    - чтобы не испортить всю работы за прошедший год нажав del
    - чтобы определить кто из команды злодей и все испортил
    - чтобы не думать как перенести свежую версию проекта с одной машины на другую

    3. composer - пакетный менеджер для php
    Нужно, когда лениво помнить все ссылки на все php библиотеки, самому качать их, подключать в автозагрузку

    4. behat + phpspec
    Тесты нужны:
    - когда хочется почувствовать себя безопасности и для сладко спать ночь, забыв о кошмарах о сломанном коде
    - когда в production все снова сломалось
    - когда ты написал одну новую фичу, а сломал три

    5. zsh
    Хорошей консолью приятно пользоваться, работа идет быстрее.
    Консоль есть жизнь, жизнь есть shell.

    6. tmux
    Мало одно окошка в консоли, тогда tmux идет к вам.
    В качестве бонуса получите возможность парного программирования совершенно бесплатно

    7. tmuxinator
    Надоело каждый раз открывать кучу окон для tmux, попробуйте его )
    8. vim
    - Потянуло на что-нибудь необычное?
    - Хочется эффективнее писать код ?
    Ну что открыли vim? В первый раз? Поздравляю закрыть вы его не сможете )
    Вызывает зависимость при частом потреблении


    9. continuous integration сервер
    Вообще ci сервер это одушевленная машина. Это твой тамагочи, ты кормишь его хорошим кодом, он радуется и ты видишь приятный зеленый огонек. Если ты дал с код от скажет что не вкусно. Ну а если ты ему, что гнилое он будет долго на тебя орать плохими словами. Со временем он растет и учится делать более серьезные вещи, и начнет помогать тебе:
    Его скилы:
    - он может сам выполнить 10 минутные тесты
    - подготовить и опубликовать проект
    - рассказать о твоем коде, даже то что ты не знаешь
    Он легко обучается и ты легко сможешь научить его удивительным вещам.

    10. куча линтеров на pre commit hook
    Чтобы ci не кормить плохими продуктами, хорошо бы проверять что ты сделал до отправки на сервер. Что бы не забыть это сделать git сам работу.

    11. gulp
    gulp - это еще один твой помощник.
    как если использовать, как watcher файлов + livepreview, можно забыть о F5 в браузере

    12. bower
    Тоже что и composer но для управления ассетами. Это я о всяких jQuery и Bootstrap

    666. Линукс
    Даже если не хочется ставить как хост-систему, его все равно надо знать. Ваш код будет работать на нем )
    Ответ написан
    16 комментариев
  • Аналог Хэдхантера (hh.ru) в США и Канаде (или глобальный)?

    Antonoff
    @Antonoff
    Разработчик
    Я живу в Англии и пользуюсь indeed.com / indeed.co.uk, часто проскакивают интернациональные вакансии, но я выбираю в округе 15 миль пробуйте его.

    Следующее это LinkedIn, там куча рекрутеров, которые пристроят вас куда угодно, лишь бы вы только по своему профессиональному уровню проходили.

    Ну и для конечно же Angel.co - стартапы без работы, не оставят.
    Ответ написан
    Комментировать
  • Аналог Хэдхантера (hh.ru) в США и Канаде (или глобальный)?

    opium
    @opium
    Просто люблю качественно работать
    старый добрый linkedin
    Ответ написан
    Комментировать
  • Как вы бы организовали хранение видео и аудиофайлов?

    ptchol
    @ptchol
    Linux system administrator
    1. Купите несколько машинок в hetzner, поставьте CEPH.
    2. Возьмите сторадж от runabove https://www.runabove.com/storage/object-storage.xml
    3. Купить у этих https://www.transip.eu/vps/ ребят vps, и аттачить к ней их же сторадж https://www.transip.eu/vps/big-storage/ относительно не дорогой.

    CDN который советовали выше, обычно как бы не про хранение, а про быструю отдачу.
    Ответ написан
  • Как вы живете с большим количеством открытых вкладок браузера?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    а что, букмарки уже отменили? или вы каждый день по каждой вкладке проходите? Pocket, опять же, не просто так придумали, да и Evernote... измените работу с информацией, и распыляться не будете
    Ответ написан
    3 комментария
  • Можно ли работать программистом, но не оценивать сроки?

    trevoga_su
    @trevoga_su
    1. НЕ ВЕЗДЕ сроки имеют место быть. Ищите работу где сроки не требуются. Таких мест полно. Это как правило долгоиграющие проекты принадлежащие бизнесу, а не говеные веб-студии, штампующие на заказ.

    2. Сроки можно озвучивать, если вы пишите что-то, что вам понятно, задача прозрачна или типична. Есть задачи, когда о сроках не может быть и речи - например, поддержка/разбор чужого кода кода. На таких задачах сроках быть в принципе не может.

    3. Приехал я как-то с поломкой машины к мастеру-частнику. Говорю - вот то то не работает. Сроки? А он мне отвечает - а я не могу сказать. Откуда я знаю что там сломалось?
    Это я к тому, что даже такая в такой теме, как ремонт авто, где казалось бы все четко и все делается по наработанной схеме, сроки крайне не определены.

    4. Если с вас требуют сроки, значит вы что-то делаете не так или работаете где-то не там. Про сроки можно говорит в строительстве, где укладка одной плитки СТАНДАРТНО занимает Н минут и вы должны полы покрыть 30х40 метров. Тогда сроки справедливы. В IT сроков не может быть. Т.е. не должен исполнитель думать о сроках. Это не его дело. Менеджмент должен дать время с запасом и не терзать исполнителя.
    Ответ написан
    3 комментария
  • Можно ли работать программистом, но не оценивать сроки?

    @djay
    Самое главное в этой индустрии - это не качество кода, а сроки. Вся индустрия держится на сроках. И нет, такого работодателя, который будет давать много времени на реализацию фичи. Любой работодатель заинтересован в извлечении максимальной прибыли при минимальном вложении (т.е экономии бюджета на разработке).

    Тебе придётся научится с этим работать и жить. Иначе никак. Это главный навык.

    С другой стороны, оценивать время которое ты затратишь на реализацию не так уж сложно:

    1. Когда спросят "сколько понадобится времени" - всегда отвечай - дайте минут 10-20 на оценку, я не могу взвесить не подсчитав.

    2. Разбей задачу которую тебе дали на под-задачи. Обычно получается - обрабока/создание какой-либой формы, добавить небольшой подсчёт и аналогичное. То есть по сути, одна задача в своём подавляющем большинстве состоих из мелких под-задач.

    3. Приувеличь сроки на ~50% (+/- 20%). Например на создание CRUD формы уйдет не больше 30 минут, а ты называй час. И остальные подзадачи в этом духе. В итоге, даже если просчитался где-то у тебя есть страховка.
    Ответ написан
    4 комментария
  • React или Angular 2, ваши прогнозы?

    Почему люди продолжают сравнивать Angular с React'ом, это же разные вещи, "реакт" есть смысл сравнивать лишь с рендером "ангуляра", потому как "ангуляр" это fullstack фреймворк, а "реакт" библиотека для отрисовки. Это как сравнивать Tesla Model S с двигателем TSI, что как минимум странно.
    Ответ написан
    3 комментария
  • Есть ли основные правила супер оптимизации?

    ErmIg
    @ErmIg
    Программист
    Есть развернутый ответ для С++ кода, но его можно обобщить и на другие языки и платформы:

    Если приложение уже написано, то для начала следует с помощи профилировщика найти в программе узкие места (участки кода, на выполнение которых тратится наибольшее количество времени). Когда такие участки найдены, то можно приступать к их оптимизации. Важно помнить, что, как правило, любая оптимизация ухудшает читаемость кода, потому не следует заниматься оптимизацией там, где это непосредственно не требуется. В процессе оптимизации легко можно совершить ошибки, потому очень желательно перед оптимизацией обложить оптимизируемый функционал юнит-тестами.

    1) Важно понимать, что алгоритмическая оптимизация практически всегда может дать лучший эффект, чем программная. Так, если алгоритм имеет сложность O(n^2), то на больших исходных данных он при любой оптимизации будет медленнее, чем неоптимизированный алгоритм сложности O(n). Впрочем, при выборе алгоритма, опираться только на его сложность не стоит: если объем исходных данных не велик, то вполне может оказаться, что алгоритм со сложностью O(n^2) будет работать быстрее, чем с O(n).
    2) Очень важно повторное использование (кеширование) промежуточных данных, вычисленных в программе – ибо быстрее всего выполняется работа, которую не надо делать. Тем не менее, не надо чрезмерно кешированием увлекаться – если объем кэшируемых данных слишком велик, то это может отрицательно сказаться на общей производительности программы (некоторые данные быстрее вычислять на лету, чем считывать из памяти).
    3) Следует избегать излишнего копирования данных (например, передавать сложные типы данных по ссылке, а не по значению).
    4) По возможности следует избегать условных операторов во вложенных циклах. Так как условные переходы, вызываемые такими операторами, плохо обрабатываются современными процессорами с конвейерной архитектурой.
    5) Данные в памяти, которые используются алгоритмами, должны по возможности лежать упорядочено, и использоваться последовательно. Это позволит процессору их эффективно кешировать. Важно помнить, что доступ к кэшу процессора значительнее быстрее, чем к оперативной памяти.
    6) Если алгоритмы это позволяют, то возможно стоит реализовать их параллельное исполнение (в отдельных потоках или процессах). Это позволит эффективно задействовать современные многоядерные процессы.
    7) В некоторых случаях (например обработка изображений) большого эффекта можно достичь применением специализированных расширений процессора (SSE, SSE2, AXX, AVX2 и другие). Стоит отметить, что большинство современных компиляторов (GCC, MSVS, ICC) поддерживают непосредственное использование данных расширений непосредственно из С++ кода при помощи специальных встроенных функций (intrinsics). Минусами такого подхода является потеря переносимости (впрочем, эта проблема решается наличием разных веток программы под разные процессоры) и значительное усложнение программы.
    8) Также большого эффекта можно достичь применением специализированных ускорителей, например GPU (технологии CUDA, OpenCL). Минусами таких решений являются потеря универсальности и значительное усложнение программы, а также то, что на специализированных ускорителях, как правило, хорошо работает далеко не каждый алгоритм.
    Ответ написан
    Комментировать
  • Какие вы знаете "тренажеры" по Vim'у?

    hrls
    @hrls
    все эти тренажеры по vim - редкая хрень совсем для нубцов
    есть годная книга, стоит прочитать shop.oreilly.com/product/9780596529833.do (есть на русском)

    а дальше только переходить на постоянное использование в качестве основного редактора (желательно именно в *nix, т.к. можно настроить всякие алиасы на запуск и прочее, gVim под Windows как F4 external editor в Total Commander)

    только использование, механическая память, отключить стрелки, vimL, свой .vimrc в github, и т.д.

    пишу со своего опыта, т.к. однажды задавался таким же вопросом
    решение выше
    Ответ написан
    1 комментарий
  • Какие вы знаете "тренажеры" по Vim'у?

    @axce1
    vimgolf
    Ответ написан
    Комментировать
  • Какие вы знаете "тренажеры" по Vim'у?

    Prognosticator
    @Prognosticator
    TODO: Здесь будут ворованные умные мысли, типа мои
    vimtutor
    www.openvim.com
    Ответ написан
    Комментировать
  • Какие вы знаете "тренажеры" по Vim'у?

    MintTea
    @MintTea
    Вбейте в баше vimtutor - этот тренажер идет в поставке с vim'ом.
    Еще есть игра про vim
    Ответ написан
    Комментировать
  • Профилирование Node.js: почему возникает ошибка в dtrace на Mac OS X Yosemite?

    donnerjack13589
    @donnerjack13589
    io.js core developer
    Потому что OS X не поддерживает jstack() в dtrace скриптах. Зато он работает на FreeBSD, SmartOS и еще можно завести аналог на linux'ах : www.brendangregg.com/FlameGraphs/cpuflamegraphs.html
    Ответ написан
    Комментировать
  • Что почитать о JavaScript уровня PRO?

    @NewTypes
    На себя
    Избитые книги:
    - Оптимизация производительности javascript
    - Javascript Сильные стороны

    ну и почитывать W3C и Ecmascript спеки. Ну, а всякие рассылки по фротенду, в частности последних js нововведений, чисто для посмотреть как другие практики их применяют и с чем сталкиваются
    Ответ написан
    Комментировать