• Двойная бюстгалтерия* глазами программиста

    • Tutorial


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

    Статья не академическая, а отражает сугубо мой упрощенный взгляд, и для тех кто уже осилил академические статьи — будет неинтересной. Тех же кому интересно понять такой простой и мощный инструмент как «двойная запись» — прошу под кат.
    Читать дальше →
  • 5 правил работы с суммами

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


      Читать дальше →
    • У нас длинные руки: 7 зарубежных площадок, на которых можно найти удалённую работу

        Развитие телекоммуникационных технологий — это win-win для работодателей и работников: компании могут находить таланты по всему миру, а люди могут работать откуда угодно, лишь бы был Wi-Fi. И популярность удалённой работы лишь растёт. К примеру, согласно отчёту Gallup, в 2015 году 37% респондентов ответили, что работают удалённо частично или весь рабочий день. Это было на 7 процентных пунктов больше, чем в 2008. И нет причин считать, что эта тенденция сегодня изменилась.

        Чем больше людей обращаются к подработке, фрилансу или удалённой работе на полную ставку, тем чаще возникает вопрос: где именно мне найти работу, которая позволит отказаться от поездок в офис? Предлагаем вашему вниманию семь зарубежных площадок, на которых можно найти удалённую работу.
        Читать дальше →
      • Усатый стрелок из двадцати трёх полигонов


          А давайте отвлечёмся немного и напишем игру в google play? И не такую огромную и неподъёмную фигню, про которую я обычно пишу статьи, а что-нибудь простое и милое сердцу?


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

          Читать дальше →
        • Google Play и 2K установок в сутки без денежных вложений (+ статистика и доходы)



          Всем привет! Решил я поделиться с Вами опытом «бесплатного пиара» в Google Play, а именно способами для достижения 2K установок в день без денежных вложений. Вся статистика прилагается +информация о доходах

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

          Статистика, указанная в статье, собрана с нового приложения, которое живет с 24 мая 2017

          Читать дальше →
        • Фантастика и фентези за два с половиной года, почти сто хороших книг

          На этот пост меня подтолкнула публикация «Почему я ворую книги, бедные авторы, и как это исправить», а именно — скепсис и возражения на мой комментарий о том, что я не читаю плохие книги. Мне предложили рассказать, как я выбираю книги для чтения и что именно читаю. Ну я и повелся.
          Оформить список было сравнительно просто, FBReader любезно хранил на GoogleDrive все скачанные книги с того момента, как там появилась эта услуга. Предлагаю вашему вниманию список прочитанного мной за 2,5 года из жанров фентези и фантастики.
          Читать дальше →
        • 15 тривиальных фактов о правильной работе с протоколом HTTP

            Внимание! Реклама! Пост оплачен Капитаном Очевидность!

            Ниже под катом вы найдёте 15 пунктов, описывающих правильную организацию ресурсов, доступных по протоколу HTTP — веб-сайтов, «ручек» бэкенда, API и прочая. «Правильный» здесь означает «соответствующий рекомендациям и спецификациям». Большая часть ниженаписанного почти дословно переведена из официальных стандартов, рекомендаций и best practices от IETF и W3C.



            Вы не найдёте здесь абсолютно ничего неочевидного. Нет, серьёзно, каждый веб-разработчик теоретически эти 15 пунктов должен освоить где-то в районе junior developer-а и/или второго-третьего курса университета.

            Однако на практике оказывается, что великое множество веб-разработчиков эти азы таки не усвоило. Читаешь документацию к иным API и рыдаешь. Уверен, что каждый читатель таки найдёт в этом списке что-то новое для себя.
            Читать дальше →
          • С помощью LAMP я создал SaaS-сервис приносящий $3700 в месяц. Моя история

            • Translation
            В этой статье я хотел бы поделиться своим опытом создания SaaS-сервиса на базе LAMP стека, Postio и доведения сервиса до состояния, когда он стал приносить 3 700 долларов ежемесячно (до обрушения рубля было почти 7 000). Сразу надо сказать, что эта история не имеет ничего общего с инвесторами, с золотой лихорадкой Кремниевой долины и с какой-то сверхсовременной технологией. Просто незамысловатая история от независимого разработчика о создании прибыльного SaaS-сервиса, который может сделать любой. Этот веб-сервис был сделан для внутреннего рынка России, поэтому я перевёл всё на английский и в доллары для удобства (пожалуйста, обратите внимание, что это перевод моей статьи, которая изначально была написана для англоязычной аудитории). Но, с другой стороны, этот опыт является довольно универсальным и может быть применён везде. По сути, это инструкция по созданию проектов такого рода.

            Три года назад я решил заняться SMM, и самым простым способом сделать это показалось запустить свою собственную группу в какой-нибудь нише и попытаться развить её. Facebook был уже, мягко говоря, довольно конкурентным на тот момент, поэтому я запустил свою тестовую группу на базе «ВКонтакте». Я выбрал очень популярную нишу, потому что всё, что я хотел, — это научиться, а не доминировать на рынке.

            Наверное, я должен немного отвлечься и сказать, что VK.com имел и до сих пор имеет процветающую «экосистему» таких групп, которая приносит прибыль их владельцам. Это — своеобразный рынок, который Facebook прикрыл уже давно. И этот базар является прекрасной средой для обучения и экспериментов.
            Читать дальше →
          • Как собрать статистику с веб-сайта и не набить себе шишек

              enter image description here


              Привет, Хабр! Меня зовут Слава Волков, и я фронтенд-разработчик в Badoo. Сегодня я хотел бы немного рассказать про сбор статистики с фронтенда.


              Мы знаем, что аналитика позволяет оценить эффективность работы любого веб-сайта, улучшить его работу, а значит, повысить уровень продаж и усовершенствовать взаимодействие пользователей с сайтом. Проще говоря, аналитика – это способ контроля над процессами, происходящими на веб-сайте. В большинстве случаев для обычных сайтов достаточно установить Google Analytics или «Яндекс.Метрику» – их возможностей вполне достаточно.


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

              Читать дальше →
            • Как мы не прошли в Y Combinator “…план по прибыли простой — тут наркотики легальны, $70 косяк...”

                Дело в том, что примерно через месяц в Y Combinator будет проходить очередной тур отбора компаний S2017. Это самый известный и раскрученный акселератор Кремниевой долины. Участие само по себе имеет смысл, даже если вы не думаете о себе, как о стартапе. Это также возможность съездить командой в Сан-Франциско на халяву.
                В этой статье — наш опыт от прошлого конкурса W2016 и расшифровка аудиозаписи с очного отбора.



                Все началось случайно. Подал заявку вечером в пятницу, на неделю позже сроков объявленных на сайте. Заявка простая, заполняется за пару часов, самое сложное для нас было записать ролик на 1 минуту с объяснением того, что мы делаем. Получилось так криво, что партнер попросил удалить ссылку из статьи. Но этого оказалось достаточно, чтобы пройти конкурс 500 из 10 000 заявок и быть приглашенным на очный тур.

                После отправки заявки было еще собеседование по скайпу, очень короткое, 5-10 мин. Нас спросили что мы делаем, а после ответа сказали: “Но ведь этого и так полно и никому не нужна еще одна такая система!” На это мы 5 минут наперебой рассказывали, что нет, мы делаем все по другому и у нас будет лучше всех. Нам сказали: “Ок” и через 5 дней пришло приглашение: “Прилетайте”, а еще через день мы вылетели.

                Читать дальше →
              • Охота на мифический MVC. Обзор, возвращение к первоисточникам и про то, как анализировать и выводить шаблоны самому

                  — Не понимаю, почему люди так восхищаются этим Карузо? Косноязычен, гугнив, поёт — ничего не разберешь!
                  — А вы слышали, как поёт Карузо?
                  — Да, мне тут кое-что из его репертуара Рабинович напел по телефону.

                  Детектив по материалам IT. Часть первая


                  Я осознаю, что писать очередную статью на тему Модель-Вид-Контроллер это глупо и вредно для «кармы». Однако с этим «паттерном» у меня слишком личные отношения – проваленный проект, полгода жизни и тяжелой работы «в корзину».


                  Проект мы переписали, уже без MVC, просто руководствуясь принципами – код перестал быть похож на клубок спагетти и сократился наполовину (об этом позже, в обещанной статье про то, как мы применяли «принципы» в своем проекте). Но хотелось понять, что же мы сделали не так, в чем была ошибка? И в течении долгого времени изучалось все, что содержало аббревиатуру MVC. До тех пор пока не встретились исходные работы от создателя – Трюгве Реенскауга…


                  И тогда все встало на свои места. Оказалось что фактически на основе принципов мы пере-изобретали «original MVC». А то, что зачастую преподносится как MVC, не имеет к нему никакого отношения… впрочем также как и к хорошей архитектуре. И судя по тому сколько людей пишет о несостоятельности «классического MVC», спорит о нем и изобретает его всевозможные модификации, не одни мы столкнулись с этой проблемой.


                  Более 30 лет собранные в MVC идеи и решения остаются наиболее значимыми для разработки пользовательских интерфейсов. Но как ни странно, несмотря на существующую путаницу и обилие противоречивых трактовок, разработчики продолжают довольствоваться информацией «из вторых рук», черпая знания о MVC из википедии, небольших статей в интернете и фреймворков для разработки веб-приложений. Самые «продвинутые» читают Мартина Фаулера. И почему-то почти никто не обращается к первоисточникам. Вот этот пробел и хотелось бы заполнить. И заодно развеять некоторые мифы.


                  Читать дальше →
                • Октодон пробует силы в МотоМодоСтроении

                    Всем привет! Спасибо тем, кто по-прежнему следит за новостями разработки компании Октодон.

                    После неудачного запуска кампании на Кикстартере в 2014 году наши ресурсы и энтузиазм были основательно подточены и проект впал в гибернацию. То есть мы пилили понемногу технологии 3д-печатного производства октодонов, но в виду фоновости этого процесса — очень медленно.
                    Несмотря на это, мы всё же не смогли пройти мимо конкурса Transform the Smartphone Challenge, объявленного компанией Lenovo совместно с IndieGoGo и решили немного встряхнуться.

                    Действительно: Moto Mods от компании Lenovo/Motorola — одна из немногих доступных модульных систем для смартфонов. Аксессуары ( мото моды) представляют собой сменные задние крышки, коммуницирующие со смартфоном через фирменный разъём. Смена модулей не требует перезагрузки телефона, да и в целом для разработчиков модулей система реализована очень удобно.

                    А поскольку Октодон изначально планировался именно в виде присоединяемой задней клавиатуры, и даже «впереди планеты всей» был реализован в виде сменной задней крышки для Samsung Galaxy S, не попробовать свои силы с мотомодостроении было бы просто непозволительно.

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


                    Читать дальше →
                  • Создание архитектуры программы или как проектировать табуретку

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

                    К моему удивлению оказалось, что на вроде бы актуальный вопрос: «Как построить хорошую/красивую архитектуру ПО?» — не так легко найти ответ. Не смотря на то, что есть много книг и статей, посвященных и шаблонам проектирования и принципам проектирования, например, принципам SOLID (кратко описаны тут, подробно и с примерами можно посмотреть тут, тут и тут) и тому, как правильно оформлять код, все равно оставалось чувство, что чего-то важного не хватает. Это было похоже на то, как если бы вам дали множество замечательных и полезных инструментов, но забыли главное — объяснить, а как же «проектировать табуретку».

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

                    Данная статья является попыткой ответить на эти вопросы хотя бы в первом приближении.
                    Читать дальше →
                  • Разработка JDK 9 прошла фазу «Feature Complete»

                      Марк Рейнхольд (Mark Reinhold) главный архитектор платформы Java в Oracle на днях сообщил в рассылке что разработка JDK 9 прошла фазу «Feature Complete».
                      image

                      Что значит, что добавление новой функциональности в проект приостановлено и теперь необходимо сконцентрировать усилия сообщества разработчиков на исправлении ошибок.
                      Читать дальше →
                    • Проведение научных исследований в современных условиях

                      Введение


                      Я писал эту статью, работая в государственном предприятии — научно-производственного характера. Данная статья нацелена на обобщение текущего состояния и структуры исследовательских работ РФ, указать слабые стороны и предложить решения по оптимизации организации развития науки в масштабах Государства.

                      1 Текущее состояние вопроса


                      1.1 Осуществление научно-исследовательских работ сегодня


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

                      Однако
                      Читать дальше →
                    • Анализ доклада Баруха Садогурского с JPoint 2015

                        Созрел ещё один разбор, в этот раз смотрим доклад Баруха jbaruch Садогурского «Как писать асинхронные многопоточные http-приложения» с JPoint 2015:


                        Слайды тут.

                        Про Java только разбираемый доклад, а не сама статья.
                        Читать дальше →
                        • +31
                        • 7.2k
                        • 8
                      • Континуации в Java

                        The distinguishing characteristic of industrial-strength software is that it is intensely difficult… the complexity of such systems exceeds the human intellectual capacity… we may master this complexity, but we can never make it go away.

                        Grady Booch

                        Давайте вернемся на несколько десятилетий назад и взглянем на то, как выглядели типовые программы тех лет. Тогда доминировал Императивный подход. Напомню, что название он получил благодаря тотальному контролю программы над процессом вычислений: в программе четко указывается, что и когда должно быть выполнено. Словно набор приказов Императора. Большинство операционных систем предлагали для написания исполняемых программ именно этот подход. Он широко используется и по сей день, например при написании различного рода утилит. Более того, с данного подхода начинается изучение программирования в школе. В чем же причина его популярности? Дело в том, что Императивный стиль очень прост и понятен человеку. Освоить его не сложно.
                        Читать дальше →
                      • Пишем обертку для FUSE на Java Native Runtime

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



                          Интересно? Добро пожаловать под кат!
                          Подробности
                          • +26
                          • 14.3k
                          • 8
                        • Модуляризация в JavaSE без OSGI и Jigsaw

                            mvn-classloader — загрузчик классов и ресурсов из maven совместимых репозитариев. Этот проект позволяет добавить ограниченную по возможностям и не сложную систему модулей в JavaSE приложение, где не нужна вся мощь и сложность OSGI.


                            Про то что еще позволяет делать mvn-classloader кроме модулей узнаете в статье.
                            Читать дальше →
                          • Быть настоящим и писать код VS перебирать и казаться

                              Отличный фреймворк!
                              Простой, чистый, производительный!
                              Так на его могиле и напишем...

                              image

                              Полсотни интернет-зависимых не спят. Прижав тощие и не очень задницы к стульям, они флудят в самописном чатике. Удовольствие стоит 6 рублей в час (цена «городского интернета» в далеких
                              2000-х с одним сервером на город-полумиллионник).


                              На это хватало сэкономленного на студенческих обедах. На выход в Глобальный Интернет по 33 рубля (хренасе!) в час — уже нет. Писк модема на 33600. Ночь.


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