• Искусство командной строки



      Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.

      Enjoy!
    • Как вырастить айтишника



        Как недавно признался Цукерберг, «я никогда не стал бы программистом, если бы не играл ребёнком в компьютерные игры». Не станем утверждать, что путь к успеху в IT лежит через геймерство. Но всё же без тесного знакомства с самыми разными программами и гаджетами программисту не обойтись. И в наши дни знакомство это начинается с достаточно раннего детства. Информационные технологии уже давно проникли в нашу жизнь. Современные программисты, в детстве игравшие на приставках и компьютерах, зачастую сталкивались с непониманием родителей, в чьей молодости не было подобных вещей. Зато теперь эти самые программеры сами обзавелись детьми и гораздо лучше понимают их увлечения. Зачастую даже становятся этакими наставниками по хайтек-развлечениями, обучая детей премудростям комбо-ударов, постройки юнитов и частой отправки врагов на респаун. Как волки обучают волчат азам охоты. И нам стало любопытно, во что же программисты сегодня могут поиграть со своими детьми? И не просто поиграть, а с пользой для молодого ума.
        Читать дальше →
      • Вы неправильно пишете животных

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


          Уязвимость рекурсивных алгоритмов навигации муравья: спираль смерти

          Не знаю, кто писал большую часть птиц, но я хочу обратить внимание на особенность, позволяющую провести инъекцию произвольного яйца в гнездо. Дело в том, что птица проверяет только расположение и количество яиц, но не их хэши. В 20% случаев кукушка, эксплуатирующая этот баг, может внести яйцо с сохранением контрольной суммы, чего вполне достаточно для повышения прав в гнезде.

          Но пойдём далее. Я не знаю, кто разрабатывал архитектуру ящериц, но они бегают в одном процессе, а дышат в другом. При этом платформа не поддерживает многозадачность, поэтому костыль с максимальной длиной бега в 4-6 секунд просто эпичен.
          Читать дальше →
        • 50+ лучших дополнений к Bootstrap



            Благодаря популярности CSS фреймворка Bootstrap, для него разработали массу различных дополнений. Даже сейчас вы можете использовать Bootstrap практически для любой задачи при разработке и оформлении вебсайта.

            Для статьи я подобрал наиболее полезные дополнения «на все случаи жизни».
            Читать дальше →
          • Загрузочный сервер — как загрузочная флешка, только сервер и по сети

              Загрузочная флешка с набором нужного софта — замечательный инструмент системного администратора. Казалось бы, что может быть лучше? А лучше может быть загрузочный сервер!

              Представьте, вы выбрали в BIOS загрузку по сети и можете установить ОС/вылечить компьютер от вирусов/реанимировать диски/протестировать ОЗУ/etc с PXE Boot сервера, ведь это куда удобнее, нежели бегать с флешкой от машины к машине.
              А в случае большого компьютерного парка, такой инструмент и вовсе незаменим.

              Вот такое меню встречает нашу команду инженеров при загрузке с PXE



              Под катом вас ждет описание всех настроек, а так же небольшой сюрприз.
              Поехали!
            • Робот-пылесос Kärcher RC 3000: опыт эксплуатации

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

                Однако среди широкого спектра придуманных человечеством мотивов для проведения ежедневной уборки жилища, я не смог найти свой. Лень неизменно одерживала верх как над рациональными доводами о необходимости пылесосить каждый день, так и над эмоциональными порывами, энергии которых хватало только на то, чтобы выругаться: "Почему опять никто не убрался!"

                Признавшись себе однажды в том, что дело не в «нехватке времени» или «усталости после работы», а в банальном нежелании брать в руки этот чертов пылесос, я решил, что нужно процесс уборки как-то автоматизировать, например, купить робота-уборщика.

                Прочного и надежного робота-уборщика, способного нормально функционировать в самых тяжелых условиях:



                Мой выбор пал на RC 3000 от Karcher, впечатлениям от эксплуатации которого и посвящается данная статья.

                Осторожно: под катом много фотографий и видеороликов
              • Дети не умеют пользоваться компьютерами… И вот почему это должно вас беспокоить

                  Оригинал: http://www.coding2learn.org/blog/2013/07/29/kids-cant-use-computers/

                  Многобукв? Что ж, почему бы вам не посмотреть пятисекундное видео с котенком, засунувшим голову в рулон туалетной бумаги, или не прочитать 140-символьное описание блюда, которым ваш друг набил себе рот. «Ням-ням». Этот пост не для вас.

                  В рабочем кабинете зазвонил телефон. Это был один из школьных секретарей. Он сообщил, что пришел посетитель, которому нужно подключиться к школьной WiFi сети. Взяв iPad, я рысью бросился вниз в приемную, где увидел молодую особу двадцати с лишним лет, сидящую в кресле с MacBook-ом на коленях.

                  Я улыбнулся и представился, присаживаясь рядом с ней. Она молча вручила мне MacBook, и выражение ее лица сказало всё: «Почини мой компьютер, гик, и побыстрее». Меня путали с техником достаточное количество раз для уверенного распознавания этой гримасы.

                  — Придется поторопиться. Через 5 минут у меня урок, — сказал я.
                  — Вы преподаете?
                  — Это моя работа, просто так получилось, что также приходится управлять командой специалистов по сетям.

                  Она изменила свое отношение ко мне. Вместо безликой, щелкающей по клавиатуре, социально неприспособленной, сексуально неопытной сетевой обезьяны, теперь она увидела во мне коллегу. Для людей вроде нее, техники являются необходимым неудобством. Она бы и рада игнорировать их, шутить о них за глаза или посмеиваться открыто, но знает, что когда не сможет отобразить ее PowerPoint на интерактивном экране — ей понадобится техник, так что прячется за фасадом вежливости и в то же время внутренне отвергает общение с ними, поскольку они слишком странные, чтобы иметь с ними дело.

                  Я посмотрел на MacBook. На тот момент у меня не было опыта с OS X. Но Джобс не был идиотом, и то, что отображалось в верхнем правом углу экрана, было общеизвестным символом WiFi. Чтобы подключить устройство к сети, мне понадобилось несколько секунд.

                  Вручил MacBook обратно, и женщина открыла Safari. «Интернет не работает», заявила она с презрением.

                  Я столько раз слышал эту фразу от учеников и персонала, что у меня уже заготовлена стандартная реакция. Обычно я достаю сотовый телефон, делаю вид, что набираю номер. И подняв трубку к уху, говорю: «Да, соедините меня с офисом Президента Соединенных Штатов… НЕТ, Я НЕ МОГУ ПОДОЖДАТЬ, это чрезвычайное происшествие… Алло, Мистер Президент, боюсь у меня плохие новости. Меня только что проинформировали, что Интернет не работает».

                  Но я решил, что молодая женщина, наверное, не оценит сарказм, и забрал MacBook обратно, чтобы добавить настройки прокси-сервера. Без каких-либо идей, как это сделать в OS X. Прокси у нас используется, чтобы убедиться, что персонал и ученики не могут получить из школьной сети доступ к порно. Также он фильтрует насилие, экстремизм, ругательства, социальные сети, алкоголь, курение, хакерство, игры и потоковое видео. Забавно, что когда вы ищете в Google «proxy settings OSX», результаты выдачи будут заблокированы, поскольку содержат слово «proxy», а оно фильтруется.

                  «Вы не знаете, где здесь настройки прокси?» — спросил я с надеждой.

                  Ответа я не получил. С тем же успехом можно было спросить у нее «Не подскажете, как мне ретикулировать сплайны с использованием гексагональной системы декодирования, чтобы я мог создать GUI на VisualBasic и отследить IP-адрес?»

                  корни шутки

                  спасибо acherneha — прим. переводчика.


                  Настройки прокси я нашел и заполнил за десять секунд. Вернул ей MacBook, и она, буквально, закрыла Safari и открыла его заново, вместо того, чтобы обновить страницу. «Пасиб…». Благодарность была ошеломляющей.

                  Я уже уходил, когда она меня остановила. «PowerPoint не работает».

                  Не устали? Под катом реально много букв
                • GTD на кухне: чем накормить голодного программиста

                  • Tutorial
                  imageИтак, как и обещал в первой части, продолжаем упрощать бытовую жизнь хабражителя. Сегодня 8 марта (кстати, девушки, поздравляю!) и части мужчин хочется порадовать своих женщин и освободить их от «рабского труда» на кухне, а другой части – приготовить для себя не традиционные пельмени\вареники\сосиски, а что-то посущественней.
                  Вот несколько проверенных рецептов, которые пригодятся и первым, и вторым.

                  Осторожно, много картинок. Голодным не входить!
                  Читать дальше →
                • Мифы нашего времени: генетически модифицированные организмы. Так ли страшен черт?

                    Человеку давно свойственно интересоваться окружающим миром и находить объяснения тому окружающим вещам и событиям. Собственно, без этого человек не стал бы человеком. На базе верований, мифов развивалась сначала религия, а потом — и современная наука, которая уже весьма успешно объясняет окружающий мир от очень малых до впечатляющих масштабов. Но всегда оставались люди, которые противились прогрессу и распространяли устоявшиеся мифы, уверяя, что они отвечают на все вопросы и незачем двигаться дальше. Гром гремит — это Перун-громовержец злится; кто-то заболел — это Бог его наказывает, вот тебе объяснения, отстань, не задавай вопросов, а лучше помолись.
                    Современные мифы более глубоки и обычно связаны с наукой. Причины понятна — наука развилась (особенно в последнее время) до такой степени, что часто нужен колоссальный объем знаний, чтобы просто понять, о чем вообще идет речь. У многих людей этого объема нет или безвозвратно потерян, что и снижает их сопротивляемость к разного рода мифам нашего времени. Миф про вредность пищевых добавок Exxx; миф про полезность натурального и вредность «химии»; миф про врачей-убийц, травящих людей прививками; миф про настолько страшное ГМО, что наклейки с надписью «без ГМО» надо клеить даже на салфетки и на пачки с солью.
                    Картинка для привлечения внимания
                    Что такое ГМО? Зачем они нужны? Как велика опасность и польза от их использования? Есть ли доказательства безопасности этих организмов?
                    Рассуждения дилетанта на тему - под катом
                  • Психологическая деформация программистов. Взгляд с обеих сторон баррикад

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

                      Я достаточно часто сталкивался с подобным мнением и не придавал ему особого значения, но когда женский коллектив нашей организации поздравил программистов с 23-м февраля по доброму назвав их «космическими войсками», решил всё же расставить определенные акценты в данном вопросе, т.к. одна из моих профессий связана напрямую с психоанализом. Да и баш уже не молчит.

                      И что же них такого деформированного?
                    • Несколько «плюшек» для Symfony 2 && Doctrine

                      В этой статье пойдет речь о том, как можно решить некоторые проблемы в Symfony 2 и Doctrine, используя базовые компоненты из коробки, а именно:

                      • Внедрение сервиса в модель
                      • Сохранение истории изменения
                      • Отключение SQLLogger и чистка кеша
                      • Разделение environment (dev — console)
                      Читать дальше →
                    • Эмиграция в Польшу как студент либо как фрилансер

                        Прокомментировав хорошую статью IT-эмиграция в самое сердце Европы, в Словакию я получил сразу же много писем по внутренней почте хабра с вопросами по этому поводу, и с просьбами рассказать подробнее. Увидев такой ажиотаж, решил что не будет лишним попробовать расписать подробно для широкой аудитории.
                        Так как я переезжал вместе с девушкой, которая ехала сюда учиться на магистратуру, то у меня есть возможность описать оба способа переезда, вместе с подводными камнями с которыми мы сталкивались. Таким образом статья разделена на 2 части — переезд фрилансера, и переезд на учебу.
                        Читать их полностью
                      • Файл, который нужно закоммитить перед уходом с работы

                        Немножко пятничного настроения в субботу. Я думаю, все видели этот код:

                        image

                        Но Aras Pranckevičius пошел еще дальше. Как написать код, который не так просто обнаружить?
                        И если вначале идут простые примеры, то дальше начинается…
                        Осторожно, чистое зло
                      • .vimrc для фронтендера

                          Привет, я занимаюсь фронтенд разработкой, и как-то так сложилось, что в своей повседневной работе активно использую vim.

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

                          Под катом я опишу основные фишки конфига. Vim использую в связке c iTerm и темой solarized, но конфиг с минимальными изменениями подходит для любого терминала и любой темы. Из-за подробного описания каждой опции он будет очень полезен для тех, кто по каким-то причинам решил перейти на вим недавно.

                          Как ни странно — в статье много картинок ;)
                          Читать дальше →
                        • Кешируем статику

                          Существует мнение, что nginx — отличный инструмент для отдачи статики.
                          Есть статьи, где описываются настройки sendfile или aio для «улучшения» отдачи.
                          На Хабре есть чего почитать о настройке proxy_store с proxy_cache для минимизации проблем со стороны мозгов сайта.
                          Еще в QA иногда возникают вопросы про кеширование картинок, например.
                          Зачем заниматься этой ерундой! — говорят опытные пользователи — OS лучше вас знает как кешировать файлы! С кешем и префетчем в современных OS, точнее FS, проблем нет! Зачем плодить свои кеши и списки популярных материалов и все такое?...

                          Есть только одно вредное «но» — в среде исполнения nginx (в общем случае Linux) понятие "файл" и вообще «файловая система» — просто понятие.
                          И однажды, когда я, подмонтировав сервер по sshfs, обновил один скриптик, случилось волшебное:
                          1. На каждой страничке стало на 4 картинки больше.
                          2. Сервера сдохли.

                          Что поделать — картинки хранились на glusterFS. Наступил полный FUSE.
                          Читать дальше →
                        • Мне кажется, что софтварный ад уже близко…

                            Прочитал пост на ту же тему и вспомнил, что давно хотел поделиться своими впечатлениями о современных юзабилити, ui и вообще, современном софте в целом.

                            Итак, произошла тут у меня на днях трагедия: windows 8 осыпался в синий экран и после перезагрузки не смог залогиниться в мой профиль. Поискав причину в гугле, я в конечном итоге нашел что виноват скорее всего chkdsk — при некоторых условиях повреждается файл $system и в результате после его исправления chkdsk слетают права на все файлы на поврежденном диске. В итоге винда при попытке логина не может прочитать файлы профиля, т.к. к ним нет доступа из-за некорректных прав и на этом виснет.
                            Подробности
                          • Нескучные интегралы

                              Некоторые из вас, вероятно, видали на просторах сети эту задачку: какое число продолжает следующий ряд?

                              Предлагался такой очевидный правильный ответ:

                              Для тех, кому неочевидно, как он получен, предлагалось объяснение. Пусть (ну и 1 при x = 0, хотя неважно). Тогда каждый член ряда — это значение следующего интеграла в цепочке:

                              Пока всё идёт хорошо, но тут внезапно:

                              В принципе, этого достаточно, чтобы повеселить друзей-математиков, но мне захотелось узнать, как вообще считаются такие интегралы и почему получается такой смешной результат. Если кому-то ещё охота тряхнуть стариной и вспомнить матан с функаном, прошу читать дальше.
                              Читать дальше →
                            • Практика IPv6 — домашняя сеть

                              • Tutorial
                              Abstract: Рассказ про некоторые возможности IPv6 на примере конфигурации сложной домашней IPv6-сети. Включает в себя описания мультикаста, подробности настройки и отладки router advertisement, stateless DHCP и т.д. Описано для linux-системы. Помимо самой конфигурации мы внимательно обсудим некоторые понятия IPv6 в теоретическом плане, а так же некоторые приёмы при работе с IPv6.

                              Зачем IPv6?


                              Вполне понятный вопрос: почему я ношусь с IPv6 сейчас, когда от него сейчас нет практически никакой пользы?

                              Сейчас с IPv6 можно возиться совершенно безопасно, без каких-либо негативных последствий. Можно мирно разбираться в граблях и особенностях, иметь его неработающим месяцами и nobody cares. Я не планирую в свои старшие годы становиться зашоренным коболистом-консерватором, который всю жизнь писал кобол и больше ничего, и все новинки для него «чушь и ерунда». А вот мой досточтимый воображаемый конкурент, когда IPv6 станет продакт-реальностью, будет либо мне не конкурентом, либо мучительно и в состоянии дистресса разбираться с DAD, RA, temporary dynamic addresses и прочими странными вещами, которым посвящено 30+ RFC. А что IPv6 станет основным протоколом ещё при моей жизни — это очевидно, так как альтернатив нет (даже если бы они были, их внедрение — это количество усилий бОльшее, чем завершение внедрения IPv6, то есть любая альтернатива всегда будет отставать). И что адреса таки заканчиваются видно, по тому, как процесс управления ими перешёл во вторую стадию — стадию вторичного рынка. Когда свободные резервы спекуляций и хомячаяния адресов закончится, начнётся этап суровой консолидации — то есть выкидывание всего неважного с адресов, перенос всех «на один адрес» и т.д. Примерно в это время IPv6 начнёт использоваться для реальной работы.

                              Впрочем, рассказ не про будущее IPv6, а про практику работы с ним. В Санкт-Петербурге есть такой провайдер — Tierа. И я их домашний пользователь. Это один из немногих провайдеров, или, может быть, единственный в городе, кто предоставляет IPv6 домашним пользователям. Пользователю выделяется один IPv6 адрес (для маршрутизатора или компьютера), плюс /64 сетка для всего остального (то есть в четыре миллиарда раз больше адресов, чем всего IPv4 адресов быть может — и всё это в одни руки). Я попробую не просто описать «как настроить IPv6», но разобрать базовые понятия протокола на практических примерах с теоретическими вставками.

                              Структура сети:

                              (Оригиналы картинок: github.com/amarao/dia_schemes)
                              • 1, 2, 3 — устройства в локальной сети, работают по WiFi
                              • 4 — WiFi-роутер, принужденный к работе в роле access point (bridge), то есть коммутатора между WiFi и LAN
                              • 5 — eth3 сетевой интерфейс, который раздаёт интернет в локальной сети
                              • 6 — мой домашний компьютер (основной) — desunote.ru, который раздачей интернета и занимается, то есть работает маршрутизатором
                              • 7 — eth2, интерфейс подключения к сети Tiera

                              Читать дальше →