• Введение в оптимизацию. Имитация отжига

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

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

    image


    Читать дальше →
  • SoftEther VPN — продвинутый мультипротокольный VPN-сервер и клиент

      Как скоро я смогу вас заинтересовать, если скажу, что в этой статье речь пойдет о VPN-сервере, который может поднимать L2TP/IPsec, OpenVPN, MS-SSTP, L2TPv3, EtherIP-серверы, а также имеет свой собственный протокол «SSL-VPN», который неотличим от обычного HTTPS-трафика (чего не скажешь про OpenVPN handshake, например), может работать не только через TCP/UDP, но и через ICMP (подобно pingtunnel, hanstunnel) и DNS (подобно iodine), работает быстрее (по заверению разработчиков) текущих имплементаций, строит L2 и L3 туннели, имеет встроенный DHCP-сервер, поддерживает как kernel-mode, так и user-mode NAT, IPv6, шейпинг, QoS, кластеризацию, load balancing и fault tolerance, может быть запущен под Windows, Linux, Mac OS, FreeBSD и Solaris и является Open-Source проектом под GPLv2?

      То-то и оно. Такое пропустить нельзя.
      Читать дальше →
    • Operation Go — игра-боевик для Go-программистов

        Сегодня появилась в сети игра для программистов — Operation Go. На мой взгляд, это очень качественно сделанная игра, в которой нужно проходить миссии, понимая, разбирая и дописывая код на Go. Всё это с сюжетом, развитием и фабулой, хорошим саундтреком, интересно и затягивающе. Вы выступаете в роли агента секретной службы, которому регулярно приходится сталкиваться с решением проблем при помощи кода.

        Очень круто сделано, правда. Попробуйте и будьте готовы открыть для себя некоторые новые аспекты Go или стандартной библиотеки. В некоторых уровнях нужна математическая соображалка. Ну и английский, само собой.

        Я бы такие игрушки на собеседованиях ставил кандидатам и смотрел, как человек решает.



        Анонс на reddit: www.reddit.com/r/golang/comments/2veiht/operation_go_a_routine_mission
        Автор — Andy Brewer
      • Python Meetup 31.10.14: асинхронность и soft skills

        • Tutorial
        imageБелорусские Python’исты в этом году отметили Хэллоуин вместе, на Python шабаше Meetup. Так получилось, что последняя пятница месяца выпала как раз на 31 октября. Это, конечно, не могло не сказаться на формате проведения встречи. Духи играли с техникой, а наши докладчики рассказывали об асинхронной работе в JavaScript и Python, преимуществах open source ERP и CRM системы Odoo и жаловались, как же не просто быть хорошим программистом, но плохим человеком.

        Читать дальше →
      • FAQ по программированию под Android от новичка, и для новичков

        Предисловие к FAQ.

        Программирование является моим хобби уже давно (правда на других языках и платформах), но до андроида руки дотянулись совсем недавно. Прошло несколько этапов, прежде чем я добрался до написания программ.
        Сначала была пара месяцев посвященных Java, на сайте с «Сгибателем».
        После, долгие попытки подружится с Eclipse, закончившиеся побегом на Android Studio.
        На данный момент выпущено 7 программ и две находятся в разработке.
        Данная подборка возникла как попытка структурирования и оптимизации полученной в процессе информации.
        Заранее извиняюсь за возможно некорректную терминологию – так как практикую обучение через создание, и в теоретической части есть пробелы.

        Надеюсь, что приведенные примеры окажутся полезными.
        Читать дальше →
      • Еще одна история про переезд, на этот раз в Нидерланды



        Всем привет.
        Хочу поделиться своим опытом переезда в Нидерланды.

        Краткое предисловие.

        Все свои 25 лет я прожил в Киеве, закончил КПИ. На 3м курсе начал заниматься веб-разработкой — пилил сайты на Джумлах — Вордпрессах, рисовал дизайны и потихоньку изучал премудрости PHP и JS. Через 1.5 года устроился в киевский филиал Anzer IT Healthcare и, после года работы там, первый раз серьезно задумался о поиске работы за границей с переездом. Тогда я видел это как успешное продолжение карьеры, еще со школьных-институтские времен, видать, въелись наставления родителей.

        Итак…
        Читать дальше →
      • Как на самом деле работает протокол Биткоин

        • Translation
        (Замечательное объяснение принципов работы сети Bitcoin авторства Michael Nielsen. Много текста, немного картинок. Обо всех корявостях перевода — в личку, буду исправлять по мере обнаружения)

        Много тысяч статей было написано для того, чтобы объяснить Биткоин — онлайн, одноранговую (p2p) валюту. Большинство из этих статей поверхностно рассказывают суть криптографического протокола, опуская многие детали. Даже те статьи, которые «копают» глубже, часто замалчивают важные моменты. Моя цель в этой публикации — объяснить основные идеи, лежащие в протоколе Биткоин в ясной, легкодоступной форме. Мы начнем с простых принципов, далее пойдем к широкому теоретическому пониманию, как работает протокол, а затем копнем глубже, рассматривая сырые (raw) данные в транзакции Биткоин.
        Читать дальше →
      • Работа для программиста в США: 5 простых шагов

          image Статья про то, что делать тем, кто хочет переехать работать в США. Я предполагаю инженерные позиции, на которые проще всего получить визы, но, возможно, статья окажется полезна и другим специалистам.

          Мой опыт несколько отличается от нижеописанного (я попала на работу в США после стажировки). Но за 4 года в США пообщалась с людьми, которые попали сюда разными путями и набрала кое-какой опыт. Так что если бы я очень хотела найти работу в США сегодня, то я бы действовала примерно так, как описано ниже.

          Заранее извиняюсь, если мой тон кому-то покажется наставническим — я не имею амбиций учить других жизни, просто иногда у меня получается такой стиль.
          Читать дальше →
        • Исследуем базы данных с помощью T-SQL

          • Translation
          Как dba и консультант по оптимизации производительности SQL Server в Ambient Consulting, я часто сталкиваюсь с необходимостью анализа узких мест производительности на экземплярах SQL Server, которые вижу первый раз в жизни. Это может быть сложной задачей. Как правило, у большинства компаний нет документации по их базам данных. А если есть, то она устарела, или же её поиск занимает несколько дней.

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

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

          Как и с любыми скриптами, сначала проверьте их в тестовом окружении, прежде чем запускать в продакшене. Я бы рекомендовал вам погонять их на тестовых базах MS, таких как AdventureWorks или pubs.

          Ну, хватит слов, давайте я покажу скрипты!
          Читать дальше →
        • Popcorn Time — обновление до версии 0.3.3

          • Translation


          17 сентября 2014 года состоялся выпуск Popcorn Time версии 0.3.3 — программного обеспечения с открытым исходным кодом предоставляющего пользователю простой и понятный интерфейс для потокового просмотра фильмов и сериалов по протоколу BitTorrent.
          На Хабре уже не раз упоминали Popcorn Time и попытки закрытия проекта (Popcorn Time: самая удобная программа для просмотра торрентов, Разработчики Popcorn Time исчезают один за другим, Popcorn Time закрылся из-за «угрозы юридических преследований и закулисных махинаций», MPAA добилась удаления форков Popcorn Time с GitHub), но Popcorn Time по прежнему жив и активно разрабатывается. Кому интересно что нового привнесла версия 0.3.3 — добро пожаловать под кат.
          Читать дальше →
        • Сверхбыстрое распознавание речи без серверов на реальном примере

          • Tutorial

          В этой статье я подробно расскажу и покажу, как правильно и быстро прикрутить распознавание русской речи на движке Pocketsphinx (для iOS порт OpenEars) на реальном Hello World примере управления домашней техникой.
          Почему именно домашней техникой? Да потому что благодаря такому примеру можно оценить ту скорость и точность, которой можно добиться при использовании полностью локального распознавания речи без серверов типа Google ASR или Яндекс SpeechKit.
          К статье я также прилагаю все исходники программы и саму сборку под Android.

          Прикручиваем Pocketsphinx к своему Андроиду
        • Linux: кнопки, светодиоды и GPIO

          Введение


          Начиная с версии 2.6.26 (кажется) у Linux появляется стандартный интерфейс для работы с GPIO через sysfs. В оригинале прочитать об этом можно в [LGPIO00]. Я попытаюсь пересказать своими словами содержимое этого документа.

          Главной точкой работы с GPIO является директория /sys/class/gpio. Если вы загляните в нее, то увидите два файла: export и unexport. Сразу после загрузки системы, все линии GPIO принадлежат ядру и использовать их в своих программах просто так не получится. Для этого, линию GPIO нужно экспортировать, записав её номер в файл export. Например, команда: echo 8 > /sys/class/gpio/export – сообщает ядру, что мы хотим использовать GPIO8. Перевод каретки '\n' и символ окончания строки '\0' – не обязательны: код на языке C: write(fd, “8”, 1); — отработает точно так же.
          Читать дальше →
        • Advanced Dependency Injection на примере Ninject

          Итак, мы открыли для себя Dependency Injection, уяснили все его плюсы и несомненные пользы и начали вовсю применять его в своих проектах. Давайте посмотрим, что же еще можно делать при помощи Dependency Injection на примере библиотеки Ninject.

          Для работоспособности кода нам понадобится, помимо непосредственно Ninject, установить еще три расширения: Ninject.Extensions.Factory, Ninject.Extensions.Interception и Ninject.Extensions.Interception.DynamicProxy. Эти расширения доступны в NuGet с соответствующими идентификаторами.
          Читать дальше →
          • +16
          • 40.2k
          • 6
        • oDesk (Upwork). Мой опыт за полтора года

            Вот уже полтора года я зарабатываю фрилансом на бирже oDesk. За это время у меня накопилось много материалов по данной теме. В данном топике я собрал все в одну статью и адаптировал для аудитории хабра.
            image
            Читать дальше →
          • Reedy – Скорочтение, которое действительно можно использовать

              Reedy – продвинутая реализация технологии скоростного чтения

              В последнее время наблюдается рост интереса к скорочтению на основе технологии RSVP. Однако большинство приложений и расширений на эту тему, при более близком знакомстве, увы, оказываются не очень удобны для ежедневного использования. А ведь в потенциале они могу помочь значительно экономить время и быстрее получать информацию. Мой друг OlegCherr решил доработать технологию, создав реализацию пригодную для постоянного использования, а я ему в этом помогаю. После двух месяцев постоянной практики чтения, тестирования, исследований и улучшений решил написать статью с разбором того, что получилось в результате, потому что результат, смею считать, будет интересен и другим. На текущий момент всё выполнено в виде расширения к браузеру Chrome и названо Reedy. Приложение под Android на подходе.
              Подробности
            • Дюжина логических задач с собеседований

                image

                Не знаю, как у вас, но у меня любимая часть интервью — логические задачи.
                Довелось пройти немало собеседований на вакансию разработчика, поэтому набралась небольшая коллекция.
                Спешу поделиться с вами!

                Некоторые задачи проще и широкоизвестные, другие заставляют хорошенько задуматься.
                Ответы пока что публиковать не буду, надеюсь, вы сами сможете всё решить.
                Предлагаю размять свой мозг…
                Читать дальше →
              • Несколько интересностей и полезностей для веб-разработчика #22

                  Доброго времени, суток уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

                  Awesome Awesomeness


                  В прошедшие несколько недель мне регулярно попадались Awesome-* проекты, о которых я упоминал в последних подборках. Началось все с Awesome-PHP, потом появились «живые списки» полезностей для сисадминов и питонистов. Все заметили положительную тенденцию и как по желанию это переросло в целый тренд. Сейчас есть коллекции инструментов для языков Ruby, Go, NodeJS, JavaScript, Java, Scala, Bash и др. Уже даже существуют подобные наборы для целых направлениям в ИТ, к примеру Big Data. Awesome Awesomeness — это живой список живых списков всего самого необходимого для разработчика из той или иной сферы.

                  Breach — полноценный браузер на JavaScript




                  Читать дальше →
                  • +51
                  • 37.4k
                  • 9
                • Что такое grep и с чем его едят

                    Эта заметка навеяна мелькавшими последнее время на хабре постами двух тематик — «интересные команды unix» и «как я подбирал программиста». И описываемые там команды, конечно, местами интересные, но редко практически полезные, а выясняется, что реально полезным инструментарием мы пользоваться и не умеем.
                    Небольшое лирическое отступление:
                    Года три назад меня попросили провести собеседование с претендентами на должность unix-сисадмина. На двух крупнейших на тот момент фриланс-биржах на вакансию откликнулись восемь претендентов, двое из которых входили в ТОП-5 рейтинга этих бирж. Я никогда не требую от админов знания наизусть конфигов и считаю, что нужный софт всегда освоится, если есть желание читать, логика в действиях и умение правильно пользоваться инструментарием системы. Посему для начала претендентам были даны две задачки, примерно такого плана:
                    — поместить задание в крон, которое будет выполняться в каждый чётный час и в 3 часа;
                    — распечатать из файла /var/run/dmesg.boot информацию о процессоре.

                    К моему удивлению никто из претендентов с обоими вопросами не справился. Двое, в принципе, не знали о существовании grep.

                    image

                    Поэтому… Лето… Пятница… Перед шашлыками немного поговорим о grep.
                    Читать дальше →
                  • Nvidia + Nexus 7 + две лупы + коробка = VR шлем

                      Добрый день! В интернете уже накопилось достаточное количество статей по сборке DIY VR шлемов и хабр тому не исключение. Но в большинстве случаев при сборке используются смартфоны с относительно не большими дисплеями, что не позволяет получить широкий угол обзора. Сегодня же мы будем собирать шлем на основе Nexus 7, потратив всего 600 рублей в ближайшем гипермарките. Ну и т.к. главный лозунг этой статьи «Меньше теории, больше практики», хватит лишних слов, начинаем!



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