• Логика мышления. Часть 1. Нейрон



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

      В настоящем цикле статей планируется рассказать о той концепции интеллекта над которой мы сейчас работаем и продемонстрировать некоторые решения, являющиеся принципиально новыми в сфере моделирования работы мозга. Но чтобы повествование было понятным и последовательным оно будет содержать не только описание новых идей, но и рассказ о работе мозга вообще. Какие-то вещи, особенно в начале, возможно покажутся простыми и общеизвестными, но я бы советовал не пропускать их, так как они во многом определяют общую доказательность повествования.
      Читать дальше →
    • Как программисту из России поступить в Стенфордский Университет в Калифорнии


        И снова с вами Американская Бизнес-ассоциация Русскоговорящих Профессионалов AmBAR и проект о предпринимателях из Кремниевой долины SiliconNews.ru Чтобы разнообразить посты про Кремниевую долину, мы будем периодически публиковать истории гостей Кремниевой долины — зачем они сюда едут и каков их опыт. Сегодня рассказывает свою историю Дмитрий, опытный программист из Москвы и выпускник МГУ, который задался целью поступить в один из лучших университетов мира — Стенфорд. Возможно, кому-то его опыт будет интересен и полезен, а кто-то, наоборот, сможет дополнить или что-то посоветовать.

        Привет, я программист из Москвы, выпускник МГУ, это моя вторая попытка поступить в топовый университет мира – Стенфорд. Ниже я опишу свой опыт поступления, ошибки первой попытки и всё, что я узнал. Заодно, я был бы признателен советам знающих людей и любой помощи в этом направлении.

        Начну с того, что с самого начала меня привлекала бизнес-карьера, и, поработав разработчиком достаточное время, я стал искать дальнейшие перспективы развития. Поскольку у меня был интерес к стартапам, как наверное у многих читающих эту статью, я задался целью выжать из этого интереса максимальный результат. И идея поступить в университет, который находится в сердце Кремниевой долины и на передовой современной технологической тусовки, пришлась как нельзя кстати.
        Читать дальше →
      • Concurrency: 6 способов жить с shared state

        • Tutorial
        concurrency

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

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

        Все примеры приведены на Java, но содержат комментарии и я надеюсь будут понятны программистам не знакомым c Java. Данная статья носит обзорный характер и не претендует на полноту. В то же время она наполнена ссылками, которые дают более подробное объяснение терминам и утверждениям.

        Читать дальше →
      • monit — наблюдатель за системными процессами

          Теория

          Monit — самостоятельный демон, работающий от пользователя root. Демон работает на Linux, Free/Net/OpenBSD, SUN Solaris и некоторых других UNIX-системах. Это OpenSource проект, у которого есть «старший брат» — коммерческий проект MMonit. Последний обладает более широким функционалом в вопросе массового мониторинга, межсетевого взаимодействия и составления отчетов. Идея авторов проста — для одиночного сервера используем Monit, для большой сетевой фермы — MMonit.

          Узнать больше
        • F.A.Q. по Java-конференции JPoint 2014

            Эпиграф


            Конференция JPoint — реальный явский хардкор, по локоть в кровище.

            Дима Завалишин, http://dz.livejournal.com/878711.html


            Что? Где? Когда?


            В пятницу, 18 апреля, в Москве пройдёт Java-конференция JPoint для Middle/Senior-разработчиков. В программе — доклады от ведущих специалистов, представляющих компании Oracle, Одноклассники, Deutsche Bank, JetBrains, Devexperts и др.

            Подробности
          • Изучение и настройка CentOS 6.4 для сервера

            image

            Сразу скажу я не специалист по Linux, начал изучать Linux только потому что аренда серверов под Windows в разы дороже, то есть как ни крути Linux это просто выгодно, а еще как оказалось в некоторых моментах и попроще чем Windows.

            Статья написана как полное руководство по одному из возможных вариантов настройки веб сервера на CentOS от начала и до конца, со всеми подводными камнями, на устранение которых человеку не знакомому с Linux, может понадобиться много времени. Сервер предполагается на Apache+PHP+Postgres, кому нужна MySQL без труда смогут найти руководство в интернете, Postgres все таки менее популярен, а поэтому чуть посложнее. Кроме возможной пользы для других, планирую и сам пользоваться своим руководством чтобы вспомнить моменты которые напрягли при настройки CentOS и быстро разворачивать сервера на CentOS по мере необходимости, поэтому любые и советы и дополнения приветствуются!

            Почему CentOS ?, тут тоже все просто так как я не работал ни с одной версией Linux, выбирал лучшую из доступных под мои требования, а требования простые раз это сервер, то нужна максимальная стабильность ну и бесплатность, а CentOS это операционная система корпоративного класса созданная на основе платной Red Hat Linux и в отличии от Fedora без всяких экспериментов только проверенные и надежные технологии от Red Hat.
            Подробности
          • Я построю свой почтовый сервер с Postfix и Dovecot

            • Tutorial
            image

            В рамках программы по унификации установленных серверных систем встала задача по переделке почтового сервера. Вдумчивое изучение мануалов и руководств показало довольно любопытный факт – нигде не было найдено однозначно достоверного руководства или подобия Best Practice по развёртыванию почтовика.

            Мануал пошаговый, основывается на внутренней документации компании и затрагивает совершенно очевидные вопросы. Гуру могут не тратить время, ноу-хау здесь нет – руководство является сборной солянкой и публикуется только потому, что все найденные руководства по развёртыванию почтовика напоминали картинку о том, как рисовать сову.
            Очень много текста
          • Обфускация JavaScript

              В статье собраны всем известные методы и предельно извращенные. Эту статью я решил написать после недавнего прочтения поста в блоге Badass JavaScript и решил её дополнить своими находками.

              Первый способ


              Он всем известен — обфускация минимизаторами такими как JS Packer, JSmin, YUI Compressor, Closure compiler или можно просто пугуглить «JavaScript Obfuscator» и найдется ещё сто штук разных обфускаторов.
              Они превращают существующий код
              function MyClass(){
                  this.foo = function(argument1, argument2){
                      var addedArgs = parseInt(argument1)+parseInt(argument2);
                      return addedArgs;
                  }
                  var anonymousInnerFunction = function(){
                      // do stuff here!
                  }
              }

              В какой-то такой вид:
              function MyClass(){this.foo=function(c,b){var d=parseInt(c)+parseInt(b);return d};var a=function(){}};

              Или такой:
              var _0xd799=["\x66\x6F\x6F"];function MyClass(){this[_0xd799[0]]=function (_0xefcax2,_0xefcax3){var _0xefcax4=parseInt(_0xefcax2)+parseInt(_0xefcax3);return _0xefcax4;} ;var _0xefcax5=function (){} ;} ;

              Или вот такой:
              eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('4 0="3 5!";9 2(1){6(1+"\\7"+0)}2("8");',10,10,'a|msg|MsgBox|Hello|var|World|alert|n|OK|function'.split('|'),0,{}))

              Но ничего не стоит его восстановить с помощью jsbeautifier.org либо просто убрать eval и получить исходный код, многое потеряем, но смысл кода восстановим. Ну и с первого взгляда мы видим, что перед нами JavaScript.

              Все это были цветочки под катом жесткие методы обфускации.
              Читать дальше →
            • Qt Build System: спасательный круг для сборки


                Примечание(17.06.2013): синтаксис примеров в статье не соответствует последним версиям. Сверяйтесь с документацией. Также в марте был выпущен Qt Creator 2.7 с поддержкой QBS.
                Не так давно команда разработчиков Qt представила новую систему сборки — QBS. Разумеется, основной реакцией было «Да чем вас QMAKE не устраивал», «Просто адаптируйте CMAKE», «Ещё одна система сборки [xkcd, стандарты]». Обещанные преимущества новой системы: гибкость, понятный синтаксис для всех разработчиков (QML — javascript-подобный декларативный язык), скорость билдов (чистых и инкрементальных), а также лёгкая расширяемость.
                Всё это мы где-то уже слышали, поэтому в данной статье мы попытаемся разобраться, как разработчики пришли к этой системе, рассмотрим простейшие примеры, изучим основные конструкции и посмотрим, какая поддержка на уровне IDE присутствует на настоящий момент.
                Let's go!
              • Использование Protocol Buffers на платформе .Net (Часть 2)

                  В первой части мы познакомились с Protocol Buffers и попробовали использовать их в .Net приложении. Сегодня мы продолжим дискутировать и ответим на оставшиеся вопросы. Как и прежде читатель должен немного владеть языком C# и системой контроля версий SVN для лучшего усвоения материала. Также не помешает иметь общее представление о WCF, т.к. будет снова (не)много кода, но уже в контексте этой технологии!

                  Снова присоединиться к дискуссии.
                • Использование Protocol Buffers на платформе .Net (Часть 1)

                    Предлагаю вашему вниманию введение в использование Protocol Buffers на платформе .Net в формате дискуссии. Я расскажу и покажу что это такое и зачем оно нужно .Net разработчику. Топик требует от читателя начального владения языком C# и системой контроля версий SVN. Так как объем материала превышает среднестатистический объем топиков на хабре, которые не вгоняют хаброюзеров в тоску и не заставляют их скроллить до комментариев, было принято решение разбить его на две части. В первой части мы познакомимся с основами и даже напишем (не)много кода!

                    Присоединиться к дискуссии.
                  • Перевод туториалов по libGDX — часть 1 (настройка проекта в Eclipse)

                    Эта статья — перевод первого туториала для проекта libGDX. Оригинал находится — здесь

                    От переводчика: недавно у меня появилось желание написать игру под Android. У меня есть некоторый опыт программирования на Java, но я почти не сталкивался с разработкой под Android. Тут я наткнулся на библиотеку libGDX, которая позволяет писать кросплатформенные игры. Также я наткнулся, что по ней не хватает русской документации, а конкретно — туториалов. Поэтому у меня появилось желание перевести туториалы. Это мой первый перевод, поэтому буду рад любым замечаниям и указаниям на неточности.

                    Настройка проекта


                    Примечание: есть проблемы с использованием Java 1.7 для Android-приложений. Убедитесь, что вы используете Java 1.6
                    Примечание: надо сделать несколько шагов для настройки приложения под Android. Смотрите ниже.

                    Эта статья описывает, как настроить Eclipse для разработки и запуска приложений как на настольном компьютере, так и на Android-устройствах.
                    Читать дальше →
                    • +8
                    • 27,9k
                    • 5
                  • Строим защищённую систему на основе TOR и I2P

                    Введение


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

                    На провокации вида «при помощи такой системы можно слить гостайну врагу» я отвечаю сразу: при помощи ядерных ракет можно не только устроить конец света, но и отогнать или расколоть угрожающий нашей планете астероид.
                    Читать дальше →
                  • Жесткий диск 3TB — подключаем к Windows XP

                      В связи с кризисным состоянием рынка жестких дисков все чаще стал задумываться, что сейчас самое время купить диск объемом 3Тб. Волей случая мой выбор пал на модель ST3000DM001. Стоимость этого чуда получилась немаленькая, но я заранее для себя решил, что буду гнаться за объемом, закрыв глаза на цену.

                      На работе воткнул свое приобретение в Windows 7 и без звука отформатировал его в новомодный GPT, который, в отличие от MBR, поддерживает диски более 2Тб. Но на домашней Windows XP возникли проблемы, диск виден, но доступа к нему нет — проблема с GPT. Устаревшая операционка отказывается принимать в строй новичка.

                      Стал гуглить, нашел обсуждение, сводящееся к тому, что нужно ставить Paragon GPT Loader. Но эта версия подходит только для Hitachi, для других моделей танцы с бубном, судя по форуму, превышают все разумные пределы.
                      Читать дальше →
                    • Cага о пакетном конвертировании pdf в text

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

                      image
                      Образец того самого pdf-а — в файле сохранена структура, но подчищены все данные.

                      Чтож, несмотря на предупреждения знающих людей, а предупреждали они ой как не зря — я за работу взялся и пережил вот такое приключение:

                      Читать дальше →
                    • 2 «простых» вопроса по джаве


                        Приветствую, уважаемый читатель.
                        Java — интересный и красивый язык. Но иногда на нем можно написать такое, что лучше этого не видеть. Но все равно полезно знать, что происходит и в таких, кривых, случаях.
                        Любителей чистого кода прошу меня извинить.

                        Когда-то давно на хабре была пара статей как не надо писать на java с интересными задачками по java.
                        Часть 1, Часть 2
                        Они очень интересные, но, к сожалению, автор не стал продолжать.

                        Представляю вашему вниманию еще 2 задачки (на большее не хватило сил. Оказывается, писать статьи не так-то просто.)

                        В конце статьи, разумеется, будут ответы с разъяснениями, а также дополнительные задания для самых сильных.
                        Читать дальше →
                      • Знаешь ли ты JAVA, %username%? Часть вторая

                          JAVA Evil EditionВ начале января я написал пост с интересными тестовыми задачками по Java. Он вызвал достаточно большой интерес, интересные задачки еще остались, поэтому продолжим.

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

                          Так получилось, что в данную часть попали более легкие задачи, так что результаты должны быть лучше. Итак, очередной тест под хабракатом (Осторожно, во второй половине ответы и пояснения).
                          Читать дальше →
                        • Знаешь ли ты JAVA, %username%?

                          JAVA Evil EditionНедавно я сдавал экзамен Oracle Certified Professional Java Programmer (бывший Sun Certified), и за время подготовки прорешал огромное количество различных задачек. Отдельные задачки по джаве иногда появляются на хабре и вызывают немалый интерес, поэтому я решил поделиться накопленным и сделать небольшую подборку.

                          Итак, ниже представлен десяток наиболее, на мой взгляд, интересных задач по Java SE из более чем 1000, проработанных мной. Сложность варьируется от средней до ооооооочень сложной. Решение большинства задач практически не требует знания API, достаточно логики и фундаментальных основ Java.

                          К слову, сложность экзамена Oracle Certified Professional Java Programmer гораздо ниже чем сложность данного теста, поэтому все, кто правильно ответит хотя бы на половину этих вопросов, может смело сдавать этот экзамен без всякой подготовки.

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

                          ВНИМАНИЕ: во второй половине статьи — ответы и подробные пояснения по соответствующим нюансам JAVA.

                          Читать дальше →
                        • Пишем игры на C++, Часть 2/3 — State-based программирование

                          • Tutorial
                          Пишем игры на C++, Часть 1/3 — Написание мини-фреймворка
                          Пишем игры на C++, Часть 3/3 — Классика жанра

                          Здравствуй, Хабрахабр!

                          Поздравляю вас, если вы прочитали первый урок! Он достаточно большой. Обещаю, что тут кода будеть меньше, а результатов больше :)

                          О чем эта часть?


                          • Мы попытаемся постичь state-based programming, с помощью которого новые уровни и меню делаются очень легко


                          В следующем посте будут натуральные игры :)



                          Читать дальше →
                          • +33
                          • 66,1k
                          • 7
                        • oDesk для начинающих

                            Зачем?

                            Вообще, идея этого поста пришла мне в голову в тот самый момент, когда я, не имея до этого за плечами полноценного опыта фриланса, решил всерьез освоить oDesk. Да, если кто не знает, oDesk — это одна из крупнейших в мире фриланс-бирж. Итак, дело было в июле этого года. Официальной работы к тому времени у меня уже полгода как не было, все подработки закончились, новых серьезных заказов не предвиделось, и oDesk представлялся мне весьма перспективным вариантом. Аккаунт, как водится, был зарегистрирован «про запас» еще за год до того, но висел все это время без дела, поэтому начинать нужно было с нуля. При этом я был почти уверен, что руководство, хотя бы самое краткое, на тему, как и с чего начинать, я где-нибудь (уж на Хабре-то точно!) да найду.
                            Возможно, я плохо искал. Однако все, что мне попалось по теме, сводилось только к тому, что не нужно сразу загибать цены, лучше начинать с небольших. Примерная цитата: «начинайте с $10 в час, со временем, дорастете и до $15». Дорастать до $15, да еще и со временем, мне категорически не хотелось, я был уверен, что можно зарабатывать значительно больше. Да и кроме того, меня волновало огромное количество вопросов. Как заполнять профиль? На какие проекты откликаться? Как составлять cover letter? Как, черт побери, получить этот первый заказ, когда все тебе отказывают?
                            В тот момент я решил, что если все у меня получится, обязательно напишу то самое руководство для новичков, которого я не нашел.

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