Как китайцы Биткоин пилили — про сегвит, хардфорк, bitcoin cash и опасности этой затеи

No Comments

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

И как раз сейчас, 1-2 августа, с Bitcoin происходит забавное. Появился значит китайский[1] клон — bitcoin cash. Причём так удачно появился, что все сми трубят о раздвоении сети биткоин, к которому давно готовились. Но в действительности в статьях много путаницы, и произошло кое-что другое. Я б это назвал величайшим разводом в мире bitcoin, но прикол в том, что из-за толпы оно может даже взлететь.

Кстати, часть крупных бирж и кошельков не поддерживают bitcoin cash (BCH) и на то есть причины. С безопасностью BCH тоже косяки, расскажу ниже. А начать следует с появления BCH, а также с segwit и bitcoin fork.

Предыстория

Всё началось с того, что в сети bitcoin стала расти комиссия. Сеть устроена так, что в каждый блок записываются переводы между кошельками —  транзакции. И эти новые блоки создаются примерно раз в 10 минут. Размер блока первоначально в bitcoin ограничен одним мегабайтом. То есть если переводов много, все они в блок не поместятся. Узел сети, создающий новый блок, включает в него переводы с наибольшей комиссией, а не вошедшие переводы попадают в очередь. Они будут подтверждены (попадут в блок), когда нагрузка на сеть уменьшится.

Таким образом, за последние пару лет комиссия выросла довольно значительно, а многие блоки подтверждаются долго. Решить этот затык решили увеличением размера блока почти[2] в 2 раза. Точнее, переход задумывался плавным, сначала блок сохранял обратную совместимость, но часть данных была выведена из него. Назвали это нововведение SegWit (Segregated Witness) (Позже запустится SegWit2x, который увеличивает блок ещё больше, но с потерей совместимости). More

Доставляемость: что настроить перед тем, как слать письма

No Comments

Если вы занимаетесь почтовыми (e-mail) рассылками, то у меня для вас есть хорошая новость ; )

Список сверки перед отправкой рассылок. Настройте DKIM, SPF, FBL, DMARC и кое-что ещё
Небольшой, но крайне полезный список сверки (в простонародье — «чеклист») готов. В нём перечислены действия, которые необходимо выполнить перед началом рассылок. Если вы хотите, чтоб ваши письма успешно доходили, а не улетали в спам.

Это и настройка записей в DNS домена, и такие технологии, как DKIM, SPF, DMARC, FBL и ещё кое-какие действия. Сипсок сверки работает онлайн на странице dkim.zxcat.ru/sverka.html. Все ваши выполненные действия запоминаются в браузере, поэтому когда вернётесь на страницу, состояние сохранится. И вы сможете отметить недостающие пункты.

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

А ещё по секрету делюсь SPF-орудием. Это онлайн-инструмент для проверки SPF-записи вашего домена. Пригодится тем, кто настраивает рассылки из разных мест. Например, с нескольких разных сайтов и рассылочных сервисов. И тем, кто хочет понять, как SPF-записи устроены.

Защита файлов на Амазон S3

No Comments

Многие бакеты (bucket, хранилище файлов) на Amazon S3 открыты вообще можно сказать нараспашку. Прямо, заходи и качай что хочешь, всё доступно.
Давно эта тема была мне известна, и давно хотел как-то это дело поправить. Да всё руки не доходили, другим был занят.

Файлы с Амазон S3

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

А по ходу ещё и другие дырки в амазоне обнаружил : ) Не совсем дырки — скорее уязвимости архитектурные. И не очень страшные. Пока что мало кто знает, мало кто использует.

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

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

Сегодня доделал-таки страницу-приглашение на вебинар: http://r.zxcat.ru/s3webinar

Пройдёт он 23 сентября. Опробую кстати механизм презентаций для самодельной комнаты вебинаров. Сделанный опять же с помощью Amazon S3 : )

Обновление: вебинар провёл, запись дополнил и превратил в видеопособие о базопасности Amazon S3. Приобрести можете здесь.

Купеческие основы — Соль продаж — Тайна 5 слов

No Comments

Окунулся недавно в мир Купеческих основ — это новый сериал от Марата Хисамова. Первый сезон про Соль продаж, а первый фильм про Тайну пяти слов.

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

Сам фильм ещё не вышел, скоро будет готов. Как выйдет, напишу отдельно. Но трейлер уже приоткрывает завесу. Он ниже. More

Лечим бессонницу Mac OS X

No Comments

osx-sleep-mode-menu

После обновления до Mavericks, у моего мини-мака несколько раз приключались трудности с засыпанием.

Как обычно, нажимаю ? ? Режим сна. Экран гаснет. Но комп остаётся включенным — светодиод продолжает светиться, вместо того чтобы начать плавно мигать.

Решил починить. More

Нечто скрытое…

7 комментариев

Один из проектов. 100% хит :-)

something hidden

something hidden

Кто угадает, что это?

Покупка на amazon.com: как я сэкономил 50% ноутбука. Часть 1

7 комментариев

Или: «половина ноутбука в подарок»).HP EliteBook on amazon.com

Недавно получил опыт! Опыт покупки товаров за рубежом. Причём удачный.

Мелочей всяких и нестандартных ситуаций в процессе было несколько, поэтому подробно опишу, как всё происходило, кому-нибудь пригодится.

Поиск

Три года назад купил Samsung R-560 BS-02, тогда это была машина-зверь.

Памяти 3Gb (оптимально для 32-битных систем на несерверной windows), процессор Core2-Duo (Centrino), мощная видеокарта и 15,6″ экран с разрешением 1680*1050 — замечательно для разработки.

Купил его за 30000 руб. А сейчас мощностей стало не хватать, решил обновить. Бюджет был тот же. Хотелось попробовать ноутбук поменьше, с металлическим корпусом, с матовым экраном, и чтоб памяти было 8Gb (сейчас бук уже у меня, очень рад 8Gb, никогда не кончается =) ). Мощную видеокарту на этот раз решил не брать, т.к. прошлая так и не пригодилась. More

Создаём Ваше первое webOS приложение

6 комментариев

Разбирал webOS, решил перевести вводную статью с сайта developer.palm.com. Перевод местами вольный.

В данной статье будет показано, как создать Ваше первое приложение для HP webOS. Вместо показа традиционного «Hello, World!», мы создадим простой счётчик, подсчитывающий число нажатий на кнопку. По завершении урока вы будете знакомы с такими понятиями, как сцены* (stages), экраны* (scenes), помощники* (assistants), и с другими важными понятиями webOS.

* С русской терминологией «пальмоводов» не знаком, так что переводил, как пришло в голову. Scene с третьей попытки перевёл как «экран», вроде бы отражает суть и не конфликтует. Быть может в терминах театра лучше перевести: тут и сценарии (scripts), и помост (сцена), и сцены («явления»), и ассистенты. More

Пишем игру на HTML5 и JS. Часть 2.5

No Comments

Эта статья — продолжение части 2, код в которой получился незавершёным. Сегодня мы сделаем следующее:

  1. Добавим в ядро возможность загружать ресурсы для модулей.
  2. Проверим работоспособность модуля zx.Image.
  3. Разберём простую анимацию.

Загрузка ресурсов ядром.

MindDefGame

Прежде всего, перенесём в ядро некоторые свойства из game.js. Например, canvas и его context. Также вынесем их инициализацию в ядро. Таким образом метод MindDefGame.initialize() упростится до:

			initialize: function(cnv, w, h) {
				zx.go(cnv, w, h);
				this.x = 0;
			},

В методе MindDefGame.loop() исправим использование canvas и его контекста:

			loop: function() {
				zx.ctx.globalAlpha = .017;
				zx.ctx.fillStyle = "#000";
				zx.ctx.fillRect(0,0,zx.cnv.width,zx.cnv.height);
				zx.ctx.globalAlpha = 1;
				var clr = 'rgb(' + Math.round(Math.random()*255) + ',' + Math.round(Math.random()*255) + ',' + Math.round(Math.random()*255) + ')';
				zx.ctx.fillStyle = clr;
				zx.ctx.fillRect(this.x, 0, 1, zx.cnv.height);
				this.x++;
				this.x %= zx.cnv.width;

			},

Кроме того, счётчик this.x теперь сбрасывается при достижении значения, равного ширине canvas’а, что позволяет полностью заполнить его цветными полосками.

Ядро.

Теперь перейдём к ядру. More

Пишем игру на HTML5 и JS. Часть 2.

No Comments

Продолжаем написание HTML5 игры. Теперь, когда готова модульная система, можем опробовать все её преимущества на деле. Это первое, что мы сделаем в этой части. А второе — это напишем модуль для работы с изображениями-спрайтами. Пока что только с неподвижными, анимация будет позже.

Переходим на модули.

Для начала, адаптируем имеющийся код.

minddef.html

В html файле после описания стилей уберём подключение старого js-скрипта. Затем включим загрузку js-классов, ядра системы и опишем модуль-запускальщик:

<script type="text/javascript" src="core/class.js"></script>
<script type="text/javascript" src="core/zx.js"></script>
<script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function() {
        zx.unit('main', {
            requires: ['minddef.game'],
            body: function() { MindDefGame.start('canvas', 320, 480); }
        });
    }, false);
 </script>

More

Реализация модульной системы в JavaScript

No Comments

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

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

Создание игры на HTML5. Часть 1.

2 комментария

В этой части расскажу немного теории об устройстве игр и покажу небольшой пример работы с canvas.

Алгоритм практически каждой игры состоит из стандартной последовательности действий. Сначала происходит подготовка, настройка параметров игры (уровня), затем запускается повторяющийся игровой цикл, ну а после выхода из него (game over/переход на след. уровень) освобождаются выделенные ресурсы.

Самое интересное находится внутри цикла. Тут у нас происходит следующее:

  1. Опрос клавиатуры/мыши/итд — управление.
  2. Глобальные события (например, перемещение камеры).
  3. Обновление состояния игровых объектов  (координаты, скорости, поведение: столкновение, умирание, появление, превращение и т.п.).
  4. Отрисовка игровых объектов и всего остального (задний фон, набранные очки и др.).

Вообще, слово «объект» слишком общее, им можно назвать что угодно. Но не придумал пока что ничего лучше (если есть идеи — сообщите ;) ). Поэтому уточню.

Игровым объектом будем считать элемент игры, обладающий своим поведением; с этим элементом игрок (или другие объекты) может взаимодействовать.

More