Задать вопрос
  • Какую паяльную станцию выбрать до 3 т.р.?

    Informatikum
    @Informatikum
    Преподаю робототехнику и информатику в школе.
    Если не хотите сильно затрачиваться, то можно купить обычный паяльник за 300-600 рублей, с тонким жалом, на 25-30 Вт. Вам этого будет за глаза для DIY проектов.
    Ученики моего кружка (6-9 классы) легко паяют DIY проекты, навесную паку (светодиодный куб) итд.

    Если всё таки вы готовы потратиться, то вам порекомендовали хороший вариант. Лучше чтобы был паяльник и фен. Но нужно понимать зачем и как ими пользоваться.
    Ответ написан
    4 комментария
  • Чем отличается junior от middle? а Senior?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Вот как это выглядит с т.з. работодателя

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

    Миддл
    - собеседование
    не глубоко, но уверенно знает ключевые технологии, разницу между абстрактным классом и интерфейсом и три-четыре вежливых ответа на вопрос, "сколько это может занять времени".
    - испытательный срок
    влился в проект и работает.
    - работа
    работает стабильно и продуктивно.

    Синьор
    - собеседование
    указывает на ошибку в тестовом задании, предлагает два решения проблемы, над которой команда пыхтела последнюю неделю и альтернативный стек технологий, на который можно перевести проект
    - испытательный срок
    рефакторит проект, делает билд джун-устойчивым, по ходу дела пишет алгоритм для киллер-фичи, запланированной только на следующий квартал и под конец испытательного срока организует воркшоп, на котором представляет свои наработки "в свободное время" по переводу проекта на другой стек технологий, в которых уже реализована большая часть функционала следующего релиза.
    - работа
    пинками помогает команде в переходе на одобренный руководством новый стек, в чем его активно поддерживает джун, окрыленный тем, что теперь его накопившиеся косяки точно никто не заметит, переводит проект на новый стек, увеличивает производительность в два раза, через год переводит еще раз, периодически генерирует идеи новых продуктов, может пропасть на неделю и вернуться с новой фичей, а может уйти в накопившийся за несколько лет отпуск и больше не вернуться, т.к. случайно встретил старого знакомого, передложившего другой мега-проект с гига-зарплатой.
    Ответ написан
    4 комментария
  • Какой взять дистрибутив и как его установить?

    RicoX
    @RicoX
    Ушел на http://ru.stackoverflow.com/
    Puppy должен потянуть, если установить на винт а не грузить из памяти, из легких имеет самый вменяемый набор софта и комьюнити.
    Ответ написан
    2 комментария
  • В каком дистрибутиве линукс по умолчанию стоит php 5.2?

    merryjane
    @merryjane
    Системный администратор
    Собрать из source на современном дистрибутиве будет намного проще, чем ставить старый дистрибутив и затем искать пакеты к нему.
    Ответ написан
    1 комментарий
  • Фриланс как основа бизнеса, возможно ли?

    opium
    @opium
    Просто люблю качественно работать
    1)Все камни управления командой.
    2)Вполне возможен, у меня всегда есть только команда удаленная.
    3)Если со всего мира то лучше с odesk.com
    4)Да там достаточно много хороших программистов, главное уметь управлять, проектировать и проверять работу. Очень многие там будут рады работать в фултайм.
    Тут можно послушать как мы девелопим на одеске 8)
    pumainthailand.com/diskussiya-o-frilanse-i-odeske-...
    Ответ написан
    2 комментария
  • Пример из статьи на Хабре. Утечка памяти?

    Привет, 3y3 :)

    Чтобы проще было разобраться в этом примере - посмотрим вначале на более простой.
    var theThing = null;
    
    var replaceThing = function () {
      var priorThing = theThing; 
      theThing = {
        longStr: new Array(1000000).join('*'),  // создаем 1Mб объект
        someMethod: function () { 
          console.log("Hi, JS-dude!")
        }
      };
    };
    setInterval(replaceThing, 1000);    // вызываем 'replaceThing' каждую секунду


    Здесь при каждом вызове в theThing записывается новый объект, у которого функция someMethod, через замыкание, хранит ссылку на внешнюю область видимости, включающую в себя priorThing, т.е. предыдущий объект.

    Получается, что каждый новый объект ссылается на предыдущий, они образуют цепочку в памяти.

    Если запустить этот код, то по этой логике будет утечка. В старых браузерах - обязательно будет.

    Пруф:
    4c8a6c47b3764be1bc65e6a8df8cfed6.png

    Современные браузеры, конечно, умнее. FF и Chrome увидят, что переменная priorThing не используется и удалят её из памяти, так что старый объект благополучно умрёт.

    Чтобы этого не происходило, в исходном примере сделан "финт ушами": переменная используется в некой функции unused:
    var theThing = null;
    
    var replaceThing = function () {
      var priorThing = theThing;
      ///////////////////
      var unused = function() {
        console.log(priorThing);
      };
      ///////////////////
      ...
    }
    setInterval(replaceThing, 1000);    // вызываем 'replaceThing' каждую секунду


    Несовершенство сборщика мусора (3y3, видимо, лучшего мнения о нём) приводит к тому, что в этом случае сборщик мусора "не просекает", что переменная-то ненужная, и очистки не происходит.

    Пруф Firefox:
    bdd1210bf5174a13bec4d27652124e70.png

    Пруф Chrome (цепочка объектов в памяти):
    f1da7a209bcb4012b89468907b3df274.png

    Вот, собственно, и причина.
    Ответ написан
    4 комментария
  • Как предотвратить двойной запуск скрипта?

    merryjane
    @merryjane
    Системный администратор
    Запускайте скрипт через flock:
    34 20 * * * flock -xn /home/db.lock /home/db.sh
    Из преимуществ перед просто созданием lock-файла и его проверкой при запуске скрипта: ситуация когда процесс был чем-то прибит или segfault-ся, то-есть lock-файл остался, а процесс не запущен. В этом случае он не запустится пока не удалите lock-файл руками.
    Ответ написан
    Комментировать
  • Какой есть аналог по функционалу phpmyadmin для PosgreSQL?

    Prognosticator
    @Prognosticator
    TODO: Здесь будут ворованные умные мысли, типа мои
    https://wiki.postgresql.org/wiki/Community_Guide_t...
    сам отказался от гуевин в пользу консоли
    Ответ написан
    8 комментариев
  • Массовая рассылка писем (как обойти спам фильтры)?

    karneds
    @karneds
    Настройте dkim, spf,ptr и не забудьте ссылку для отписки от рассылки.
    Подробнее
    help.mail.ru/mail-help/rules/general
    help.mail.ru/mail-help/rules/technical
    habrahabr.ru/post/114852

    Произвожу рассылки по 35к-40к адресатам за 2-3 часа. Проблем с попаданием в спам нет)
    Ответ написан
    3 комментария
  • Парсинг - Как получить подкатегории если они подгружаются при помощи js?

    AMar4enko
    @AMar4enko
    Загружаем сайт, открываем девелоперскую панель хрома, идем в Network.
    Щелкаем на пункте меню - видим запрос. Правой кнопкой на него, Сopy as CURL.
    Вставляем в командную строку с установленным CURL. Запускаем. Получаем HTML следующего уровня меню.
    Для разбора используем phpQuery, например.
    Подбираем параметры запроса, пишем простенький парсер, запускаем - вуаля.

    Парсер, написанный на Ruby за 40 минут, которые ушли на то, чтобы подобрать нужные задержки между запросами, чтобы сервер не блокировал: pastebin.com/69yDgMaz
    Резальтат работы парсера: https://dl.dropbox.com/s/xq2wg3h13zns9ph/categorie...
    Для того, чтобы полностью спарсить дерево категорий, понадобилось 997 запросов.
    Ответ написан
    7 комментариев
  • Выбор железа для домашнего сервера?

    edinorog
    @edinorog
    Троллей не кормить!
    4650b64075b243bb975f49d849207d28.jpg
    P9A-I/C2550/4L
    Комментарии излишни я думаю =)

    4b764014edb64b53bcda714a2facc309.jpg
    GA-9SISL
    побольше портов

    1703b42e1038406f94e3d96684b5100d.png
    A1SA7-2750F
    =D кому мааааало портов!

    dacd394042204ac58e55e8a05188bd9c.jpg
    C2750D4I гы!
    Ответ написан
  • Как настроить Nginx для внутреннего перенаправления контента?

    @Micher
    location @api_v1 {
      include proxy_params;
      proxy_pass http://api_v1;
    }
    
    location @api_v2 {
      include proxy_params;
      proxy_pass http://api_v2;
    }
    
    location @mock_api_v2 {
      index index.json;
      root /path/to/dir/with/mock/files/;
    }
    
    location /api/v2/ {
      try_files @api_v2 @mock_api_v2 @api_v1;
    }
    Ответ написан
    Комментировать
  • В чем отличие между git push -u origin master и git push origin master? Зачем ключ -u для команды git push?

    EXL
    @EXL
    Энтузиаст
    В том случае, если ветка master (или branch_name) не является отслеживаемой веткой origin/master (или origin/branch_name), а вы хотите сделать её таковой.

    Выполнив команду git push -u origin master вы устанавливаете связь между той веткой, в которой вы находитесь и веткой master на удалённом сервере. Команду требуется выполнить единожды, чтобы потом можно было отправлять/принимать изменения лишь выполняя git push из ветки без указания всяких алиасов для сервера и удалённых веток. Это сделано для удобства.
    Ответ написан
    2 комментария
  • Что делать, если твои коллеги(и ты сам) только что освоили git, и каммитят все подряд?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Правило одно: Каждый каммит не должен ломать работоспособность ПО, и быть законченным целым одной небольшой задачи (этапа и т.п).

    Другой вопрос, что не всегда такое имеет место быть. Поэтому не беспокойтесь об этом. Чем меньше каммит, тем лучше.
    Ответ написан
    3 комментария
  • Где можна достать базу сокращений названий городов?

    savostin
    @savostin
    Еще один программист
    @kuznetsovin отчего же: Geonames
    The table 'alternate names' :
    -----------------------------
    alternateNameId : the id of this alternate name, int
    geonameid : geonameId referring to id in table 'geoname', int
    isolanguage : iso 639 language code 2- or 3-characters; 4-characters 'post' for postal codes and 'iata','icao' and faac for airport codes, fr_1793 for French Revolution names, abbr for abbreviation, link for a website, varchar(7)
    alternate name : alternate name or name variant, varchar(200)
    isPreferredName : '1', if this alternate name is an official/preferred name
    isShortName : '1', if this is a short name like 'California' for 'State of California'
    isColloquial : '1', if this alternate name is a colloquial or slang term
    isHistoric : '1', if this alternate name is historic and was used in the past

    Remark : the field 'alternatenames' in the table 'geoname' is a short version of the 'alternatenames' table without links and postal codes but with ascii transliterations. You probably don't need both.
    If you don't need to know the language of a name variant, the field 'alternatenames' will be sufficient. If you need to know the language
    of a name variant, then you will need to load the table 'alternatenames' and you can drop the column in the geoname table.
    Ответ написан
    1 комментарий
  • Может ли быть действительна скорость чтения с виртуального диска 400 мб/c?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Вполне может! У Вас RAID10, соответственно практически линейная зависимость от скорости всех дисков на чтение. Другими словами, чтение у Вас происходит в 4 потока со всех дисков сразу. И здесь virtio показывает себя хорошо.
    Ответ написан
    Комментировать
  • Как сделать раскрывающийся липкий блок?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Ну как тут не удержаться?))
    jsfiddle.net/petroveg/k7zg8/1
    Ответ написан
    Комментировать
  • Интересуют полноценные курсы по генетическому программированию - где взять?

    Hateman31
    @Hateman31
    Делиться мыслями - это круто!
    Могу отдать несколько книг за лайк)
    Ответ написан
    5 комментариев
  • Как настроить supervisor?

    miraage
    @miraage
    Старый прогер
    Мой лайтовый конфиг.
    Мне удобно, что stderr и stdout лежат в /var/log/supervisor/* в соответствующих файлах.
    Все по полочкам из коробки, с минимальной конфигурацией.

    miraage@xoxo:~$ ls -la /etc/supervisor/conf.d/
    total 12
    drwxr-xr-x 2 root root 4096 Jul 24 10:46 .
    drwxr-xr-x 3 root root 4096 Jul 23 10:58 ..
    -rw-r--r-- 1 root root   90 Jul 24 10:30 superproject.conf


    miraage@xoxo:~$ cat /etc/supervisor/conf.d/superproject.conf 
    [program:superproject]
    command=php /home/miraage/Projects/superproject/cli.php gearman worker
    Ответ написан
    Комментировать