Как стать автором
Обновить

3 факта о блокчейне, которые понятны каждому

Open source *Децентрализованные сети Криптовалюты
Ожидает приглашения
1. Блокчейн — не то же самое, что эпоха интернета в середине 90х

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

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

Цель блокчейна — противостоять текущей проблеме централизации данных. Таким образом, блокчейн, скорее, эволюция интернета, а конкретно — инфраструктуры данных, чем новый интернет. Его цель — создать децентрализованную систему данных, которую одному человеку взломать или использовать в своих целях не под силу.
Читать дальше →

Настройка APC Smart UPS 1000 в Ubuntu server 14.04 LTS и установка модуля Webmin

*nix *Настройка Linux *Системное администрирование *
Ожидает приглашения
Началось все с того, что у меня сгорел служивший верой и правдой много лет Back-UPS 500VA. Не беда, подумал я и заменил его на APC Smart UPS 1000, что для моего сервера оказалось гораздо лучше. Сразу скажу, изначально сервер работал на форточках и проблем с бесперебойником не было. После замены ИБП и окончательно-бесповоротном переходе на Ubuntu я задался вопросом: собственно, как мониторить состояние сети электропитания и состояние бесперебойника? Погуглив некоторое время, я наткнулся на несколько инструкций по подключению бесперебойников к никсовым машинам, но почему-то они все были про Back UPS и USB. В частности, меня натолкнуло на написание этой статьи аналогичная статься на Хабре «Начальная настройка ИБП APC в Linux с точки зрения чайника».

Но у меня же старенький тысячник с ком-портом и про USB он и слыхом не слыхивал.
Читать дальше →

Навигация в Android: от UX до реализации. Часть 1

Разработка под Android *
Ожидает приглашения
На сегодняшний день мобильные приложения имеют довольно богатый функционал и помогают пользователям мобильных устройств в различных делах. С каждым обновлением приложения разработчики исправляют баги и добавляют новый функционал. Когда в приложении становится большое количество фич, очень важным моментом становится грамотно продуманный UX.

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

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

Asterisk на Mikrotik. Обновленная настройка

Asterisk *Разработка систем связи *
Ожидает приглашения
На написание этой заметки (статьей не назовешь, ибо все уже давно разжевано в статье Asterisk на Mikrotik) меня толкнули изменения в интерфейсе Winbox, а так же изменения репозиториев OpenWRT в связи с помещением в архив устаревших версий, на которые ссылается оригинальный пост. Начну с истории: у меня на работе имеется виртуальная АТС, на которую я без стеснения привязал SIP-клиент на телефоне. По правилам провайдера доступ для внутренних звонков не блокируется, но доступ наружу, хоть и можно подключаться с любой точки мира, блокируется при частой смене IP, чего избежать на мобильном устройстве проблематично. Пересмотрев всевозможные варианты я остановился на поднятии у себя дома Asterisk на моем Mikrotik RB2011UiAS-RM. Благодаря инструкции от shadowalone я миновал львиную долю танцев с бубном, но в связи с устаревшими ссылками пришлось-таки заняться мелким шаманством. Итак:
Читать дальше →

Удаление директории в PHP

PHP *
Ожидает приглашения
Доброго времени суток, дорогие читатели. Сегодня хотелось бы поговорить на тему удаления директории в PHP. Казалось бы, что операция не является сложной, однако некоторые нюансы имеют место быть. Давайте рассмотрим способы, как можно это сделать.

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

В сети советуют написать функцию, которой в качестве аргумента будет передаваться путь к директории, которую нам необходимо удалить. В теле функции необходимо организовать листинг содержимого директории, в рамках которого осуществляется проверка — является ли файл директорией. Если файл является директорией, то по данному условию функция вызывает себя. Это необходимо для зачистки вложенных директорий, и это будет работать на всех уровнях вложенности. В ином случае, для файла применяется функция unlink() — она предназначена для удаления файла. За рамками данной проверки на последнем шаге мы удаляем директорию.
Читать дальше →

Медленный regexp, умирающий Node.js

JavaScript *Node.JS *Разработка веб-сайтов *
Ожидает приглашения


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


Недавно и сам столкнулся с проблемой производительности регулярок на Node.js, и к чему это может привести.


В один прекрасный момент все инстансы сервиса на Node.js один за одним перестали отвечать на health-check, слать логи и метрики. Пришлось остановить эти контейнеры (мы запускаем Node.js в Docker) и запустить новые.

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

Планшет Wacom, драйвер не отвечает или не работает, решение проблемы

Периферия
Ожидает приглашения

Приобрёл я недавно планшет One by Wacom (CTL-671), установил драйвер с диска, сделал всё по инструкции и ничего не запускается.


Пишет следующее: "Драйвер планшета не отвечает".


Драйвер планшета не отвечает
Читать дальше →

Проверка на XSS уязвимости, сайта на основе Yii2

Yii *Информационная безопасность *
Ожидает приглашения
В yii по умолчанию используется шаблонизатор для view чистый php. К сожалению, это может привести к ошибкам экранирования вывода. Разработчик выводимый контент должен экранировать, используя Html::encode(), либо аналог. Обычно, для поиска подобных ошибок, пентестер забивает во все возможные поля форм код вида:

<script>alert(document.cookie);</script>


Потом проходиться по всему проекту и смотрит что упало. Но иногда бывает, что форма выводиться не полностью. Если же атрибуты будут посланы явно отдельным запросом Post, то будут загружены в модель. Либо сейчас заполнить атрибут через форму пользователь не может, и все хорошо, а через месяц форма меняться, параметр становиться доступен для редактирования, и где-то в совсем другой части проекта проявляется XSS.
Читать дальше →

Зачем нужен геймдизайнер?

Разработка игр *
Ожидает приглашения
Дисклеймер
Это мое понимание и я считаю такой подход верным, сейчас. Моя задача — поднять уровень проработки проектов у начинающих девелоперов и заставить задуматься профессионалов.

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

И тут на сцену выходит геймдизайнер.

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

Анимации для игры, грабли, шишки, костыли — Unity 3D, Anima 2D, Dragon bones, Spine

Дизайн игр *Компьютерная анимация *Разработка игр *
Ожидает приглашения
Дисклеймер
Материал посвящен тем кто разрабатывает игры, хочет начать это делать, начинающим аниматорам, художникам и всем кто работает с Unity 3d.

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


Начало работы с Unity


Итак, ты придумал игру, идею и упаковал ее адекватно(99% начинающих этого не делают), разработал игровые механики, формулы, задатки сюжета, разработал увлекательный геймплей, что дальше?
А дальше идет выбор — 2D или 3D проект. Конечно это должно быть сделано на этапе идеи, но бывают ситуации, когда после геймплейного прототипа появляются варианты и выбор. И это, черт возьми, самое ужасное что может случится, очевидно же 2D — проще для начинающих. Тут кроется вся боль и сама суть дальнейших страданий.
Читать дальше →

Еното-ориентированное программирование

ООП *Программирование *
Ожидает приглашения

Амбула


По английски units это units, а по сербски = енот. Желающим написать, что слова "амбула" нет, я его дарю.


Благодать


Спорьте = не спорьте, в большинстве, обычные люди  хотят себя чувствовать хорошо = стремятся к благодати: есть, двигаться, обладать… программировать.

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

Размер домашней библиотеки имеет значение

Лайфхаки для гиков
Ожидает приглашения
Привет, Хабр! Представляю вашему вниманию перевод статьи Growing Up Surrounded by Books Could Have Powerful, Lasting Effect on the Mind

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

Исследования уже показали, что книги могут помочь улучшить работу мозга, уменьшить стресс и даже сделать нас более чуткими. Теперь команда во главе с Джоанной Сикорой из Австралийского национального университета изучает преимущества взросления в книжной среде. Как сообщает Alison Flood из Guardian, обширное новое исследование предполагает, что дома с обширными библиотеками могут давать детям навыки, которые сохраняются во взрослой жизни.
Читать дальше →

Метод получения статус кодов при работе с Selenium

Тестирование веб-сервисов *
Ожидает приглашения
Добрый день.

Недавно столкнулся с проблемой при проведении UI тестов: Selenium не имеет функции получения статус кода страницы. Как оказалось в дальнейшем, разработчики Selenium специально не предусмотрели данную возможность т. к. это противоречит концепции симуляции работы пользователя (подразумевается что пользователь не способен посмотреть статус код ответа).
Читать дальше →

Руководство по достижению роста. Перевод книги The Growth Handbook

Growth Hacking *
Ожидает приглашения
Данная статья является выдержкой из перевода книги The Growth Handbook от Intercom. Перевод осуществлен продуктовой командой CallUpper (сервис для увеличения количества лидов с сайта) для русскоговорящих друзей-продуктологов. Кому интересно, книга доступна для бесплатного скачивания на сайте.

Итак…
Читать дальше →

Не бойтесь начинать заново

Проектирование и рефакторинг *Разработка веб-сайтов *
Ожидает приглашения

Введение


В данной публикации речь пойдет о личном опыте разработки одного из проектов.

Хочется отметить в первую очередь что я не позиционирую себя как какой-то super-senior developer.

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

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

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

Делаем свой запускатор Minecraft без лаунчера

Разработка игр *
Ожидает приглашения
Привет всем!

Сегодня мы напишем простенький лаунчер для игры Minecraft. Реализовывать мы это будем с помощью CMD в Win 7, и поместим это все в файл расширения ".bat". Далее пот катом.
Читать дальше →

Еще одна статья о DI в Spring Boot

Java *
Ожидает приглашения

Как сказал один мудрец: вечно смотреть можно на три вещи: как течет вода, как горит огонь и как кто-то пишет очередную стать о DI в Spring Boot. Сегодня я сделаю попытку коротко описать всю эту петрушку.
Читать дальше →

Подключение 2 HTC Vive к одному компьютеру. Пошаговая инструкция

AR и VR
Ожидает приглашения


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

Данный способ скорее всего сработает и под другие VR гарнитуры, такие как Oculus или WMR, однако тестировалось всё на Vive.

Данный способ также сработает под 3 и более гарнитуры, если характеристики железа будут позволять.
Читать дальше →

Книга Growth Handbook теперь доступна на русском языке для свободного скачивания

Growth Hacking *
Ожидает приглашения
image

Если Ваш бизнес не растет, все остальное не имеет значения. Это вечная проблема, с которой сталкиваются компании на всех этапах своего развития. В конце 2017 года мы начали думать о создании серии подкастов, посвященных теме роста. Основной посыл был очень простым: мы хотели взять интервью у людей, которые создали маркетинговую функцию роста в некоторых из наиболее успешных компаний-разработчиков программного обеспечения нашего поколения.
Читать дальше →

Универсальный RestFull API для СУБД на nodeJS

JavaScript *Node.JS *
Ожидает приглашения
Проблематика: Есть сервер с СУБД, например MySQL. Для управления данными в таблицах необходимо реализовать полный RestFull API интерфейс на nodeJS для каждой таблицы:

  • POST — новая запись
  • PUT — редактировать запись с конкретным id
  • GET — получить все записи
  • GET — получить запись с конкретным id
  • DELETE — удалить запись с конкретным id

Очень много рутины и кода.

Задача: Написать универсальный обработчик запросов, который может обрабатывать данные любых таблиц в базе данных. Типы обрабатываемых данных — строка, текст, целое число, дробное число, дата, дата и время, булево.

Решение: Все указанные типы в JS конвертируются через строку. Шаблон единого Post запроса будет иметь вид — /table/: Имя таблицы/action/: Тип запроса.

Тип запроса — POST,PUT,GET,DELETE.
Читать дальше →