• Программирование LibreOffice Base. Часть 2

    • Tutorial
    В части 2 будет рассмотрена связь между таблицами базы данных и формами. В частности как задавать связь между двумя таблицами и использовать таблицы-«справочники» в качестве источника данных для выпадающих списков.
    Читать дальше →
  • Прогулка по заводу желаний

      Откуда приходят и куда исчезают желания?

      Иногда трудно заставить себя делать что-то нужное: мыть посуду, делать зарядку, работу работать… В интернете есть много статей с рецептами преодоления нежелания, и каждый день добавляются новые. Я вижу во многих статьях одну и ту же проблему.

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

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

      Ближе к теме — почему иногда трудно заставить себя работать? Заглядываем в интернет, и сразу получаем решения — надо закрыть соцсети, разбить задачу на мелкие шаги и хвалить себя.

      Или еще проще — проблемы нет, у вас воля слабая, отговорки ищете, возьми и сделай (just do it).

      Позвольте усложнить.
      Читать дальше →
    • Почему веб-разработка на Go приятнее чем на PHP

      Для кого я пишу? Для тех кто пишет на php (возможно также python, ruby) и слышал про Go, но ещё не решился его изучить детальнее. Я приведу доводы почему стоит изучать этот язык программирования и почему за ним будущее в веб-разработке.
      Читать дальше →
    • Реверс-инжиниринг Star Wars: Yoda Stories

      • Translation
      image

      [Прим. пер.: Зак Барт из Zachtronics не только пишет замечательные видеоигры-головоломки (SpaceChem, TIS-100, SHENZHEN I/O) и апгрейдит электронные пищущие машинки, но и увлекается обратной разработкой ресурсов старых игр. Эта статья посвящена успешному взлому любимой игры его детства.]

      Предисловие


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

      В 2006 году, через несколько дней после выпуска демо Star Wars: Empire at War, я опубликовал пару рудиментарных инструментов, позволявших выполнять дамп и переупаковку файлов данных игры, в том числе простой мод, благодаря которому можно было сыграть за Империю (эта возможность была отключена в демо). В сети почти уже не найти следов моей работы, но мне удалось получить бесплатную футболку разработчика игры Petroglyph, а это уже кое-что.

      За много лет до этого у меня была ещё одна игра по «Звёздным войнам» под названием Star Wars: Yoda Stories. Она была довольно запутанной и получила плохие отзывы, но это меня не останавливало. Как начинающий программист и упёртый фанат Star Wars я пытался найти ресурсы игры, чтобы сделать собственную ужасную игру по Star Wars. Однако мне удалось обнаружить только звуковые эффекты и небольшое количество спрайтов, которые распространялись как иконки темы для рабочего стола.


      Перенесёмся вперёд на шестнадцать лет: я изучаю свою древнюю коллекцию CD-дисков в поисках старых игр, в которые можно поиграть на компьютерной вечеринке в тематике 1990-х. Вставив CD в привод, я сразу же понял, что нашёл файл данных размером примерно четыре мегабайта, который ждёт применения полученных мной в колледже знаний для взлома. Лучше позже, чем никогда!
      Читать дальше →
    • История создания домашнего облака. Часть 1. Настройка среды Debian для повседневного использования

      • Tutorial
      Когда-то давно, в 2011 году, я пришёл на хабр со статьёй «Debian Server для новичка», которая представляла из себя систематизацию различной информации и представление её в актуальном и работоспособном виде. Данная статья так же позиционируется как справочный материал для новичка или обычного пользователя Linux, этакий мой небольшой вклад в популяризацию Linux. По сути, всё о чём я буду писать – это некая развёрнутая инструкция по установке и настройке домашнего облачного сервиса Nextcloud с нуля.



      Созданная виртуальная машина с Nextcloud отработала с марта 2017 года практически без сбоев и осенью 2017 года я задумался о статье. У меня осталось много записей и комментариев в части решения различных проблем и нюансов, я долго вынашивал идею всё же привести всё это в порядок и опубликовать и новогодние праздники 2018 года мне в этом помогли. Надо сказать, что статья запоздала как минимум на полгода, но, думаю, что установить и настроить актуальные версии Debian и Nextcloud по аналогии с нижеприведённой информацией не составит большого труда, хотя, как известно, дьявол кроется как раз в деталях.
      Ниже читатель познакомится с предпосылками создания своего облака и получит работающие инструкции по стартовой настройке Debian, лёгкому тюнингу среды Gnome3, компиляции, сборке и установке пакетов для Debian, установке и настройке сервисов Apache, SQL и PHP и начала работы с ними, генерации и подключения самоподписного сертификата SSL для виртуального хоста Apache, установка и настройка Nextcloud. Я не стал оформлять эту статью как технический мануал или туториал с длинной вереницей команд, а решил попробовать написать статью как рассказ, но без ущерба технической составляющей. Опытный пользователи Linux вряд ли тут найдут что-то новое, но, возможно, смогут прочитать его как тематическую историю в минутку своего свободного времени.
      Читать дальше →
    • «Письмо турецкому султану» или линейная регрессия на C# с помощью Accord.NET для анализа открытых данных Москвы

      • Tutorial
      Когда речь идет об освоении самых основ машинного обучения, чаще всего предлагается изучить соответствующие инструменты на Python или R. Мы не будем обсуждать их плюсы и минусы, а просто зададимся вопросом, что делать если вы знакомы только с экосистемой .NET, но при этом вам очень любопытно окунутся в мир науки о данных? Ответ прост, не отчаиваться и посмотреть в сторону F#, а если вы также, как и я из .NET знаете только азы C#, то попробовать изучить Accord.NET Framework.

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

      Несмотря на то, что в заголовке статьи указан C#, мы попробуем собрать код и на VB.NET.

      Мне осталось только пригласить вас под кат!


      Читать дальше →
      • +15
      • 8.3k
      • 4
    • Снимаем «4D видео» с помощью depth-сенсора и триангуляции Делоне



      Привет Хабр! Это заметка о небольшом хобби-проекте, которым я занимался в свободное время. Я расскажу, как с помощью несложных алгоритмов превращать карты глубины от depth-сенсоров в забавный вид контента — динамические 3D сцены (их ещё называют 4D video, volumetric capture или free-viewpoint video). Моя любимая часть в этой работе — алгоритм триангуляции Делоне, который позволяет превращать разреженные облака точек в плотную полигональную сетку. Приглашаю всех, кому интересно почитать про алгоритмы, самописные велосипеды на C++11, и, конечно же, посмотреть на трёхмерных котиков.

      Для затравки: вот что получается при использовании RealSense R200: skfb.ly/6snzt (подождите несколько секунд для загрузки текстур, а затем используйте мышку, чтобы поворачивать сцену). Под катом есть ещё!
      Обладатели лимитированных тарифов, будьте осторожны. В статье много разных изображений и иллюстраций.
      Читать дальше →
    • Свой веб-сервер на NodeJS, и ни единого фреймворка. Часть 1

      Для многих людей JavaScript ассоциативно связан с обилием разнообразных фреймворков и библиотек. Разумеется, инструменты, которые помогают нам каждый день — это хорошо, но, мне кажется, нужно искать некий баланс между использованием инструментов и прокрастинацией, а также знать, как работают вещи, которыми ты пользуешься. Поэтому, когда я только сел разбираться с NodeJS, мне было особенно интересно написать полноценный веб-сервер, которым я мог бы пользоваться сам.
      Читать дальше →
    • Когда интуиция нас подводит: о том, как одну олимпиадную задачу по физике десятилетиями решали неправильно


        «Имеются два одинаковых шарика, находящихся при одной и той же температуре. Один из них лежит на горизонтальной поверхности, другой подвешен на нити. Обоим шарикам сообщают одинаковое количество теплоты. Будут ли после этого температуры шариков одинаковыми или нет? (Любыми видами тепловых потерь можно пренебречь.)»

        Такую задачу иногда можно встретить на олимпиадах по физике или в соцсетях. Общепринятый ответ интуитивно понятен: из-за затрат энергии на тепловое расширение при наличии силы тяжести шарик, лежащий на горизонтальной поверхности, окажется холоднее висящего на нити. В недавней статье было показано, что этот ответ неправильный. На самом деле, результат будет обратным: лежащий шарик окажется теплее висящего. Разберемся, почему традиционный метод решения этой задачи приводит к неправильному ответу, и почему интуиция в этом случае нас подводит.
        Читать дальше →
      • Борьба с читерами в онлайн-играх: 22 «нужно» и «нельзя»

        • Translation
        image

        Почти невозможно найти успешную многопользовательскую онлайн-игру (кроме тех, в которые играют только друзья разработчика), в которой нет читеров. Другими словами, если в вашей публичной игре нет читеров, она или недостаточно популярна, или распознавание мошенников работает не слишком хорошо. Во всех остальных случаях вам придётся иметь дело с читерством. Изучите список шагов которые НУЖНО и НЕЛЬЗЯ совершать (подробное обсуждение темы читерства приведено в моей трёхтомной книге, см. примечание в конце статьи) при борьбе с мошенничеством в играх.
        Читать дальше →
      • Программирование метода конечных разностей

          Вручную выписывать коэффициенты СЛАУ и вводить их в программу — не самый эффективный способ программирования метода конечных разностей, потому что для каждой новой вариации постановки задачи потребуется писать новую программу. Логичнее разработать общий солвер для более широкого класса задач, что упростит программирование и тестирование. Тестирование алгоритмов МКР затруднено, так как точное решение неизвестно, но общий солвер можно протестировать на задачах с заданным точным решением.


          Автором разработан солвер Joker FDM для решения 1- и 2-мерных задач сопряжения для эллиптических уравнений методом конечных разностей.

          Читать дальше →
          • +14
          • 10.4k
          • 3
        • Домашний хостинг сайтов с динамическим IP

          У меня (как и у многих web-разработчиков) имеется с десяток сайтов которые необходимо где-то размещать (хостить).

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

          В то-же время в наличии имеется:

          • Домашний сервер на Ubuntu
          • Быстрый ethernet-интернет от МТС

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

          Разумеется есть всем известные Dynamic DNS сервисы вроде noip.com, но они успешно решают лишь задачу удаленного доступа к нашему серверу (по SSH или FTP), но для хостинга совершенно нам не подходят, поскольку в настройках домена на DNS-сервере нам нужно обязательно прописать A-запись с реальным IP-адресом (а не ссылку на наш виртуальный домен).
          Читать дальше →
        • SHENZHEN I/O — новый симулятор программирования микроконтроллеров



            Как многие из нас хотели быть инженерами-схемотехниками, но не стали ими? Я не говорю о программистах, строителях и прочих специальностях. Многие мечтали паять платы, ходили в радиокружки и курочили домашнюю аппаратуру (получая после этого ремня от отца, само собой) в попытке понять, как она работает? Если не каждый первый, то уверен, многие.

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

            В этой публикации я предлагаю вам познакомиться с новой игрой, вышедшей в ранний доступ в Steam 6 октября этого года. Встречайте, инди-симулятор создания цепей и простых устройств — SHENZHEN I/O.

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

            Хочу признаться: я обожаю визуальные новеллы. Кто не в курсе — это такие то ли интерактивные книжки, то ли игры-в-которых-надо-в-основном-читать-текст, то ли радиоспектакли-с-картинками, преимущественно японские. Последние лет 5, наверное, художественную литературу в другом формате толком не вопринимаю: у визуальных новелл по сравнению с бумажными книгами, аудио-книгами и даже сериалами — в разы большее погружение, да и сюжет регулярно куда интереснее.

            Читать дальше →
          • Реверс-инжиниринг визуальных новелл (часть 2)

            • Tutorial

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


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


            Перед тем, как погружаться в пучины бинарных дампов, давайте прикинем, как работают большинство движков визуальных новелл. Визуальная новелла сама по себе состоит из текста (реплик героев, диалогов, промежуточного повествования), графики и звуков. Для того, чтобы ее воспроизвести пользователю, явно нужно свести все это воедино с помощью какого-то управляющего воздействия. В теории можно было бы зашить это все прямо в exe-файл, но в 99% случаев (ладно, вру, в 100% виденных лично мной) так все-таки не делают, а хранят такие инструкции отдельно в виде отдельной программы-скрипта. Как правило, скрипт пишется на особенном языке программирования (специфичном для движка), который выглядит как-то так:


            Читать дальше →
          • UWP beginner: Адаптивный дизайн (VB.NET + C#)

            • Tutorial
            Мы продолжаем историю по разработке под универсальную платформу Windows (UWP). Тема этой статьи родилась из-за большого количества вопросов по ней к автору от независимых разработчиков UWP-приложений. Для кого-то она может показаться вполне очевидной, но мы надеемся, что вы найдете в статье полезный лайфхак по адаптивному дизайну в UWP.

            Статья подготовлена совместно с активным участником сообщества Microsoft Developer, Алексеем Плотниковым, и менеджером по работе с техническими аудиториями, Стасом Павловым.


            Читать дальше →
          • Dynamic DNS на C# и Яндекс.API

            Сегодня, помимо моего любимого занятия (возиться с Arduino в моем кружке детского творчества), решил я поставить себе сервер (Windows 2012 r2) и использовать его для различных манипуляций. Изучив тонну информации, всё прошло гладко.

            Когда, закончил экспериментировать в локальной сети, у меня появился вопрос: «Как можно увидеть свой сервер из внешней сети, если у меня динамический IP». Снова помогла всемирная книга знаний и были найдены такие сервисы, как DynDNS, no-ip и т.п.

            После регистрации увидел, что нужно качать прогу (в роутере настроек под dyndns нет), а как добросовестный параноик, я не люблю ставить сторонний софт. Вспомнив, что имею при себе домен второго уровня делегированный на Яндексе, принялся изучать сторону вопроса, для написания своего софта на C#.
            Читать дальше →
          • Лю Цысинь, «Темный лес», вторая книга из серии «Задача трех тел». Анонс

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

            Предварительные варианты обложек книги (кликабельны):

            image
            Читать пролог второй книги
          • Бюджетный стартовый набор Arduino

            У меня более 10 лет стажа в IT-индустрии, но как радиолюбитель — я полнейший нуб. Как и многих в последнее время, меня заинтересовали возможности Arduino. Но не в качестве крутого устройства по управлению всем вокруг, а больше в качестве программируемого конструктора и развлечения.

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

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

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


            Читать дальше →
            • +12
            • 20.7k
            • 6