• Как сделать кроссплатформенное десктопное приложение на базе веб-технологий



      Дмитрий Дудин (xbSoftware)


      Сегодня я вам расскажу про технологию nw.js, большинство слайдов моей презентации будет посвящено ей. Это технология позволяет разрабатывать десктопные приложения и писать их на html, javascript и css. Причем приложение будет кроссплатформенное — под Windows, Linux и Mac. Можно их сбилдить и они будут иметь доступ к графическому интерфейсу системы, т.е. смогут еще работать с менюшками и т.д.
      Читать дальше →
    • Подводные камни Bash

      • Translation


      В этой статье мы поговорим об ошибках, совершаемых программистами на Bash. Во всех приведённых примерах есть какие-то изъяны. Вам удастся избежать многих из нижеописанных ошибок, если вы всегда будете использовать кавычки и никогда не будете использовать разбиение на слова (wordsplitting)! Разбиение на слова — это ущербная легаси-практика, унаследованная из оболочки Bourne. Она применяется по умолчанию, если вы не заключаете подстановки (expansions) в кавычки. В общем, подавляющее большинство подводных камней так или иначе связаны с подстановкой без кавычек, что приводит к разбиению на слова и глоббингу (globbing) получившегося результата.


      Читать дальше →
    • Представляем бесплатную лабораторию программирования Wolfram Programming Lab для изучения языка Wolfram Language

      • Translation
      • Tutorial

      Перевод поста Stephen Wolfram "Announcing Wolfram Programming Lab".
      Выражаю огромную благодарность Кириллу Гузенко KirillGuzenko за помощь в переводе и подготовке публикации

      Я рад объявить о запуске Лаборатории программирования Wolfram — среды для всех, кто хочет обучиться программированию и вычислительному мышлению вместе с Wolfram Language. Wolfram Programming Lab можно запускать как в браузере, так и на настольных системах (Mac, Windows, Linux).

      Я давно хотел найти способ, позволяющий кому бы то ни было, будь то детям или взрослым, познакомиться с Wolfram Language и всеми его возможностями, даже при полном отсутствии знаний и опыта в сфере программирования. Теперь он у нас есть!

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


      Читать дальше →
      • +14
      • 14.8k
      • 2
    • Горутины: всё, что вы хотели знать, но боялись спросить

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

        Что за горутины?

        Горутина (goroutine) — это функция, выполняющаяся конкурентно с другими горутинами в том же адресном пространстве.

        Запустить горутину очень просто:
        go normalFunc(args...)

        Функция normalFunc(args...) начнет выполняться асинхронно с вызвавшим ее кодом.

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

        Сколько вешать в граммах?

        Чтобы было проще ориентироваться, рассмотрим цифры полученные опытным путем.
        Читать дальше →
      • А вот про Sphinx 3.0

          Вот вы там все сидите и ничего не знаете, а мы, тем временем, пилим помаленьку мега-релиз поискового движка Sphinx за номером 3.0. Грядет ряд больших переделок. Часть из них, как полагается, ещё даже как следует не начата. Однако большая часть уже скорее готова, чем нет. А отдельно взятые изменения даже протекли в публичную ветку 2.3. Так что, пожалуй, настало время вкратце начинать рассказывать, чего ожидать в светлом будущем: надеюсь, не столь отдалённом. Кому интересно почитать, все под кат; кому послушать, приходите на meetup в эту субботу. Если совсем вкратце, то: прощай, концепция дополняющего основную базу движка; привет, хранилище документов, тотальный RT, репликация, REST и ряд других известных ключевых слов.
          Читать дальше →
        • Проектирование Web API в 7 шагов

          • Translation
          7steps Разработка веб API это нечто большее чем просто URL, HTTP статус-коды, заголовки и содержимое запроса. Процесс проектирования – то, как будет выглядеть и восприниматься ваш API – очень важен и является хорошей инвестицией в успех вашего дела. Эта статья кратко описывает методологию для проектирования API с опорой на преимущества веба и протокола HTTP, в частности. Но не стоит думать, что это применимо только для HTTP. Если по какой-то причине вам необходимо реализовать работу ваших сервисов используя WebSockets, XMPP, MQTT и так далее – применяя большую часть всех рекомендаций вы получите практически тот же API, который будет хорошо работать. К тому же полученный API позволит легче разработать и поддерживать работу поверх нескольких протоколов.

          Хороший дизайн затрагивает URL, статус-коды, заголовки и содержимое запроса


          Обычно руководства по проектированию Web API фокусируются на общих концепциях: как проектировать URL, как правильно использовать HTTP статус-коды, методы, что передавать в заголовках и как спроектировать дизайн содержимого, которое представлено сериализованными данными или графом объектов. Это всё очень важные детали реализации, но не настолько в смысле общего проектирования API. Проектирование API – это то, как сама суть сервиса будет описана и представлена, то что вносит значительный вклад в успех и удобность использования Web API.

          Хороший процесс проектирования или методология предоставляют набор согласованных и воспроизводимых шагов для создания компонентов сервисов, которые будут доступны в виде Web API. Это значит, что такая прозрачная методология может быть использована разработчиками, дизайнерами и архитекторами для координации своих действий по реализации ПО. Использованная методология так же может уточнятся со временем по мере того, как улучшается и автоматизируется процесс без ущерба для деталей методологии. На самом деле, детали реализации могут меняться (например, платформа, ОС, фреймворки и стиль UI) независимо от процесса проектировки, когда эти две активности полностью разделены и задокументированы.
          Читать дальше →
          • +26
          • 45.2k
          • 8
        • Притворитесь умным

            Лучший способ научиться чему-то — это научить другого.

            Наступил январь, студенты начинают сдавать экзамены. И часто самым сложным экзаменом оказывается математика. Мой хороший друг спросил у меня: «Что такое теорема Лагранжа, как её доказать и понять?»

            Я знаю определение и доказательство этой теоремы, но понять её я смог только после объяснения другу.

            И я вспомнил, что такое случается постоянно. Лучше всего я играю в шахматы, когда вслух озвучиваю, что происходит на доске (я играю по интернету), лучше всего пишу код, когда вслух объясняю себе, что я хочу, и как это получить. И понимаю материал с лекций, когда объясняю его другим.



            Мы всегда даём хорошие советы, но, как Алиса в стране чудес, следуем им нечасто. Это происходит, потому что мы торопимся, мы создали себе шаблоны поведения, и не задумываемся над тем, чем мы занимаемся.

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


            Подумайте, как решить эту задачу? Как бы эту задачу решил умный человек?
            Читать дальше →
          • Material Design и AngularJS

            Ни для кого не секрет, что Google повсюду в своих продуктах внедряет так называемый material design. Как и любой другой стиль он имеет сторонников и противников. Не буду касаться этих споров. Если вам нравится данный подход, Google подготовил полную спецификацию и описание особенностей: Material Design.

            Для любителей angularjs появилась библиотека с набором директив, реализующих графические компоненты и позволяющих создавать разметку в соответствии с принципами material design. О ней и пойдет рассказ.

            Я постараюсь кратко показать некоторые особенности и недостатки, а также покажу небольшое приложение для демонстрации.

            image
            Читать дальше →
          • Зачем vi-топор программисту 21-го века

            Не помню, когда и при каких именно обстоятельствах, но как-то очень давно я открыл для себя Git. Поначалу я не совсем, конечно, понял его преимуществ перед другими системами контроля версий, но уже порядком к тому времени подустав от TFS, которую на тот момент мы использовали в компании, решил его попробовать.

            Git очень быстро завоевал мою любовь и с тех пор я даже не представляю себе свою работу без него.

            Однажды, играясь и пробуя разные команды, я случайно запустил режим редактора, а Git, как оказалось, по умолчанию использовал Vim, который я до того времени в глаза и не видел. Ну и как обычно происходит первое знакомство с этим редактором? Правильно — с недоумением и перезагрузкой терминала. Банально — выйти из редактора я так и не смог и честно, даже подумал, что редактор тупо глючит. Я даже помню, как-то удивился — как же блин так получилось, что такие умные чуваки, создавшие такую мощную штуку, как Git, могли выбрать такой архаичный, тупой, непонятный и некрасивый (как мне поначалу показалось) редактор?


            Читать дальше →
          • Чем полезным заняться в праздники?

              Или как сделать, чтобы не было мучительно больно за впустую пролетевшие новогодние каникулы?
              Если в связи с обесцениванием рубля вы внезапно никуда не едете на новогодние праздники, или едете, но уверены, что будет куча времени, которое вы ещё не знаете, чем занять (например, в дороге), то предлагаю вам 7 способов приятно и полезно провести время.

              1. Посмотреть видео с конференций
              Многие сейчас в восторге от TED. Да, там есть интересные и полезные вещи, но если интересно развитие в отраслях менеджмента и IT, то я рекомендую сайт IT Talks. Там подборки с самых интересных тематических конференций за последние годы.
              Ещё есть очень интересная подборка видео с семинаров на CodeFreeze
              Чтобы смотреть видео в оффлайне (самолёте, поезде и т.д.) могу посоветовать пару расширений для FireFox:
              addons.mozilla.org/ru/firefox/addon/download-flash-and-video — качает почти всё кроме Vimeo
              addons.mozilla.org/ru/firefox/addon/video-downloadhelper — качает почти всё и Vimeo в том числе, но названия файлов генерит абы как.
              Читать дальше →
            • Учебник AngularJS: Всеобъемлющее руководство, часть 1

              • Translation
              • Tutorial

              Содержание


              1 Введение в AngularJS
              2 Engineering concepts in JavaScript frameworks
              3 Modules
              4 Understanding $scope
              5 Controllers
              6 Services and Factories
              7 Templating with the Angular core
              8 Directives (Core)
              9 Directives (Custom)
              10 Filters (Core)
              11 Filters (Custom)
              12 Dynamic routing with $routeProvider
              13 Form Validation
              14 Server communication with $http and $resource

              1 Введение в AngularJS


              Angular – MVW-фреймворк для разработки качественных клиентских веб-приложений на JavaScript. Он создан и поддерживается в Google и предлагает взглянуть на будущее веба, на то, какие новые возможности и стандарты он готовит для нас.

              MVW означает Model-View-Whatever (модель – вид – что угодно), то есть гибкость в выборе шаблонов проектирования при разработке приложений. Мы можем выбрать модели MVC (Model-View-Controller) или MVVM (Model-View-ViewModel).

              Этот обучающий материал задумывался как отправная точка для изучения AngularJS, его концепций и API, чтобы помочь вам создавать великолепные веб-приложения современным способом.
              Читать дальше →
            • freelance — you're doing it wrong!

                Доброго времени суток уважаемые хаброжители, меня зовут Юра, и сегодня я поведаю вам о проблемах высокотехнологичного отпрыска удалённой работы — фриланса, а именно о разработке мобильных, десктопных и вэб-приложений, вёрстке и дизайне. Работаю я в этой сфере достаточно недавно, буквально с 2008го, и опыта хорошего и плохого у меня накопилось достаточно много. Цель данной публикации — показать разницу между простыми сотрудниками и фрилансерами, а также — показать основные организационные проблемы, которые возникают при разработке и проектировании программного обеспечения. Я надеюсь, что этот пост поможет прояснить некоторые производственные моменты, которые могли бы быть не совсем очевидны для разработчиков и их руководства.

                Суждения в данной статье субъективны — сплошная концентрированная «отсебятинка».
                Они основаны на моём личном опыте и опыте людей с которыми я общаюсь.
                PAIN INSIDE
              • Я — сертифицированный PHP-специалист

                Да, наверное, возможность применения данного выражения — греет кому-то душу, но я немного о другом.

                Разрешите поделиться опытом прохождения сертификации по PHP 5.5 от компании Zend Technologies.

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

                Путь от «да, я хочу получить статус ZCE» до покупки ваучера


                4 года — ровно столько времени потребовалось от простого «Да, не плохо было бы получить сертификат» до «Девушка, смотрите, а я сдал»

                Если у вас появится такая мысль, то открывая в очередной раз Америку, скажу — вам помогут: правильно и ясно поставленная цель; четко разграниченные сроки; план действий.

                Цель


                Записывать поставленные цели — старо как мир, однако, о ведении записей и планировании жизни как таковой я раньше не задумывался. «Стать десятым ZCE в Казахстане» — одна из первых записанных на бумаге и достигнутых целей.
                В этом плане нам технарям не нужно стесняться учиться и перенимать опыт у тимлидов, руководителей проектов и топ-менеджеров. Жизнь — это не только код, фичи и багфиксы.
                Читать дальше →
              • Yeoman для новичков

                • Tutorial


                Есть такие программы и утилиты, воспользовавшись которыми, пользователь возопит: «Не знаю, как я мог жить без этого инструмента раньше!». На мой взгляд, консольная утилита Yeoman, написанная на Node.JS, относится как раз к разряду таких незаменимых инструментов. Почему?
                Давайте посмотрим
              • Обработка данных NBA за 30 лет с помощью MongoDB Aggregation

                • Translation
                Прим. перев.: Американский писатель Майкл Льюис известен не только своими историями о трейдерах с Уолл Стрит, но и (в первую очередь) книгой Moneyball, по которой впоследствии был снят одноименный фильм («Человек, который изменил все»). Главный ее герой – Билли Бин, генеральный менеджер бейсбольной команды «Oakland Athleticks», создает конкурентоспособную команду исключительно на основе анализа статистических показателей игроков.

                Памятуя об этом, мы решили опубликовать один любопытный материал о том, к каким интересным и нетривиальным выводам можно прийти, анализируя публично доступную статистику игр NBA за последние 30 лет с помощью фреймворка MongoDB Aggregation. Несмотря на то, что в данном примере автор анализирует показатели команд в целом, а не статистику по отдельным игрокам (она также находится в открытом доступе), он приходит к весьма занимательным выводам – руководствуясь его выкладками вполне реально провести самостоятельный анализ, подобно тому, как в свое время поступили герои Moneyball.


                image

                При поиске средства анализа массивов данных больших объемов и сложной структуры вы можете инстинктивно обратиться к Hadoop. С другой стороны, если вы храните свои данные в MongoDB, использование Hadoop Connector кажется излишним, особенно если все ваши данные помещаются на ноутбук. К счастью, встроенный фреймворк MongoDB Aggregation предлагает быстрое решение для проведения комплексной аналитики прямо с экземпляра MongoDB без установки дополнительного ПО.
                Читать дальше →
                • +20
                • 22.5k
                • 9
              • Guinness — «Идеальная Пинта Пива». Кейс превосходного CRM решения

                  Я давно изучаю CRM и прочел немало литературы по этой теме. Существует много определений, что такое CRM, но больше всего мне понравилось определение из книги «Руководство по CRM. Путь к совершенствованию менеджмента клиентов». Автор Эдриан Пейн.
                  Система CRM, которую часто называют также менеджментом клиентов, является бизнес — подходом. Его цель — создание, развитие и укрепление отношений с тщательно выбранными клиентами, увеличение выгоды клиента, повышение корпоративной прибыли, а значит, и максимизация прибыли инвесторов. CRM часто ассоциируется с использованием информационных технологий при внедрении маркетинга взаимоотношений: CRM ОБЪЕДИНЯЕТ НОВЫЕ ТЕХНОЛОГИИ С НОВЫМ РЫНОЧНЫМ МЫШЛЕНИЕМ, СОЗДАВАЯ ТАКИМ ОБРАЗОМ ВЫГОДНЫЕ ДОЛГОСРОЧНЫЕ ОТНОШЕНИЯ С КЛИЕНТАМИ.

                  Я считаю, что проблема многих современных компаний заключается в желании тотальной автоматизации взаимоотношений с клиентами. Мы можем планировать звонки клиентам, ставить себе задачи и напоминания, можем прогнозировать сделки и считать конверсию. Но как все это поможет заработать лояльность клиента? Ведь наши конкуренты занимаются тем же самым. Определение, данное выше, говорит нам о том, что CRM — это не только информационные технологии, но это новое рыночное мышление. Отличным примером, подтверждающим эту мысль, является кейс Guinness — «Идеальная Пинта Пива», на который я также наткнулся в этой книге. Привожу вам его полностью.
                  Читать дальше →
                  • +3
                  • 12.9k
                  • 5
                • Курс от Яндекса о том, что должен знать каждый разработчик, который хочет делать большие системы. Модное слово DevOps и другое

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

                    В Яндексе тестировщику невозможно без автоматизации. Мы даже развиваем экспериментального робота, который способен брать на себя функциональное тестирование. В какой-то момент мы поняли, что не так много людей осознают, сколько сейчас есть возможностей работать не 12 часов, а головой. Собрав весь свой опыт в тестировании и деплое, мы открыли в питерском офисе Яндекса Школу автоматизации процессов разработки. У нас получилась школа, где каждый, кто пишет код, может получить базовый набор знаний о том, как собрать, запустить и поддерживать сервис в продакшене так, чтобы это стоило недорого.



                    Курс открывает моя лекция о том, зачем вообще автоматизировать процесс разработки. Из нее вы получите представление о то, что будут рассказывать мои коллеги.

                    Сейчас занятия закончились, и мы, как и обещали, выкладываем записи лекций, которые перемежаются с мастер-классами, для всех желающих. Понятно, что наш опыт и знания – не 42, но мы надеемся, что они принесут вам пользу.
                    Читать дальше →
                  • Расширяя полотно картины Ван Гога “Звездная ночь” с помощью языка Wolfram Language (Mathematica)

                    • Translation

                    Перевод поста Piotr Wendykier "Extending Van Gogh's Starry Night with Inpainting"
                    Скачать перевод в виде документа Mathematica, который содержит весь код использованный в статье, можно здесь (архив, ~8 МБ).


                    Могут ли компьютеры научиться рисовать, как Ван Гог? Определенно да, до некоторой степени! Для этого, подобно художникам-копиистам, алгоритму сначало потребуется взять некоторое оригинальное произведение, а затем он сможет на их основе создать что-то сам. Насколько хорошо он сможет с этим справиться? Пожалуйста, судите сами.

                    ExtendingVanGoghStarryNightInpainting_1.gif
                    Вторая премия на фотоконкурсе ZEISS
                    Читать дальше →
                  • Вероятностное программирование

                    Вступление


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

                    Я, автор, Юра Перов, занимаюсь вероятностным программированием в течение уже двух лет в рамках своей основной учебно-научной деятельности. Продуктивное знакомство с вероятностным программированием у меня сложилось, когда будучи студентом Института математики и фундаментальной информатики Сибирского федерального университета, я проходил стажировку в Лаборатории компьютерных наук и искусственного интеллекта в Массачусетском технологическом институте под руководством профессора Джошуа Тененбаума и доктора Викаша Мансингхи, а затем продолжилось на Факультете технических наук Оксфордского университета, где на данный момент я являюсь студентом-магистром под руководством профессора Френка Вуда.

                    Вероятностное программирование я люблю определять как компактный, композиционный способ представления порождающих вероятностных моделей и проведения статистического вывода в них с учетом данных с помощью обобщенных алгоритмов. Хотя вероятностное программирование не вносит много фундаментального нового в теорию машинного обучения, этот подход привлекает своей простотой: «вероятностные порождающие модели в массы!»

                    «Обычное» программирование


                    Для знакомства с вероятностным программирование давайте сначала поговорим об «обычном» программировании. В «обычном» программировании основой является алгоритм, обычно детерминированный, который позволяет нам из входных данных получить выходные по четко установленным правилам.
                    Читать дальше →
                  • Joy Inc. Работа мечты и бизнес-процессы, основанные на радости

                      А вы знаете софтверную компанию Menlo Innovations из городка Анн Арбор в штате Мичиган? За 14 лет эти ребята попали на обложку Forbes и страницы The Wall Street Journal, завоевали тонну наград и оказались в числе 500 самых быстро растущих частных компаний Америки. А еще они провели несколько тысяч экскурсий по своему офису, дав возможность посетителям погрузиться в атмосферу компании и увидеть все рабочие процессы изнутри.



                      Секрет успеха Menlo Innovations заключается в том, что руководство компании закладывает радость и счастье своих сотрудников в основу всех бизнес-процессов. Разумеется, при этом они не забывают про счастье своих заказчиков и радость конечных пользователей своих продуктов.

                      Как построить успешный бизнес, одной из главных целей которого является радость и счастье сотрудников, рассказывает CEO компании Ричард Шеридан в своей книге “Работа мечты” (оригинальное название “Joy Inc. How We Built A Workplace People Love” мне нравится больше).
                      Читать дальше →