Архив за 13 января 2014 - 4

Deploy с помощью Salt
До сих пор во многих компаниях deploy создает большие проблемы и может занимать дни, недели и в особо запущенных случаях месяцы. Но ситуация не безнадежна. Существует много инструментов и практик, способных помочь в этом нелегком деле. Вот только эти инструменты чаще всего за один-два дня не освоишь, а сроки горят.

Чего обычно хочется:

  • Возможность поднять проект локально на машине разработчика. Весь или хотя бы частями. Причем очень хочется, чтобы Dev конфигурация отличалась от Prod в минимуме паратемров. Это позволит избежать “work on my machine” багов. Да и вообще, когда один разработчик работает на OS X, другой на Windows, а продакшен на Debian, то жди беды, это не считая того, что каждый делает работу по настройке окружения.
  • Dev конфигурацию хочется разворачивать на любой машине и ОС в пару команд в консоли. Это опять же позволит уменьшить фактор “work on my machine” багов. А еще позволит привлекать других разработчиков в проект за минимальное время (vagrant up и поехали).
  • Конфигурация должна быть понятна и программисту, и админу.

Всего этого мы добьемся на связке Salt + Vagrant на примере Django проекта. Но большинство техник будут полезны разработчикам не только на Python, но на других языках.
Читать полностью »

Передача треков Google Analytics сторонним доменам без javascript

О чем статья?

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

Зачем передавать?

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

Почему без javascript?

  • Если нужно выполнить редирект пользователя после обработки логики запроса на сервере.
  • Google Analytics api и так хорошо документирован, а читать копипаст документации это не уровень хабра, не так ли?

Суть метода проста. Берем все куки вида __utm и передаем их, как параметры, в урле на другой домен. Ничего не происходит. Расходимся. Добавляем последним параметром __utmk, который является особым хешем всех остальных кук гугл аналитики. Поздравляю мы сделали, то что делаем функция _link в известном файле ga.js от Google Analytics.
И так если у вас переход на другие сайты обрабатывал контроллер, то вам не надо во все ссылки добавлять конструкцию вида:

onclick="_gaq.push(['_link', 'https://www.payment-system.com?contractId=example']); return false;"

Если нужны исходники формирования хеша для ключа utmk, прошу в github.
Далее история о процессе получения данного метода.

Читать полностью »

в 13:44, , рубрики: Без рубрики

Приветствую, читатели! Хочу вам рассказать о компьютере который дал новый, мощный толчок в развитии такой ветви компьютеров как AIO, или по нашему моноблоки. Речь пойдет об оригинальном iMac увидевшем свет в 1998 году.

Оригинальный Apple iMac
Читать полностью »

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

Уже третий день подряд проблемы: у дебетовой карты — со съемом средств (точно не принимают банкоматы «Райфайзена»), кредитные карты не принимают к оплате терминалы «Русского стандарта» и «Авангарда» («Операция не выполнена», «Операция отклонена», «Код Z1»).

Сейчас же уже не работает ни интернет-, ни мобильный клиент.

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

Читать полностью »

в 13:07, , рубрики: Без рубрики

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

Ответы и свой вариант объяснения почему такое поведение логично я буду скрывать под спойлером. Сразу оговорюсь, что не претендую на непоколебимую истину своих версий и буду рад их обсудить. В разгадывании вам может помочь отличный русский перевод спецификации ECMAScript 5 за который большое спасибо iliakan!
Читать полностью »

Последние полгода я занимаюсь разработкой достаточно большого web-приложения, под капотом которого ревет и дымится NodeJS. Когда дело дошло до деплоя на продакшн я задумался: «почему бы мне не использовать несколько тредов с инстансом приложения?».

Реализовав кластер, я увидел, что производительность от его использования возросла в 1,5 раза, что очень даже не плохо, учитывая малый объем потраченных усилий. Но я решил не останавливаться на этом, и сделать удобный CLI для работы с кластером, чтобы отвязать код, который отвечает за запуск кластера от конкретного приложения. Кроме того, очень хотелось демонизировать кластер, чтобы он висел себе молча в процессах, поднимал упавшие воркеры, писал в логи, и никого больше не отвлекал.

Так появился node-clusterize-cli.
Читать полностью »

На хабре уже были статьи о технологиях печати, которые используют 3D принтеры, однако в данной статье я постарался подойти к вопросу системно, чтобы в голове у читателя сложилась четкая картина о том, какие принципы заложены в технологии 3D печати, какие материалы используются и в конечном итоге какую технологию лучше использовать для получения определенного результата, будь то деталь из титана, или мастер-модель для последующего тиражирования.
Статья основана на книге Fabricated: The New World of 3D printing

image

Читать полностью »

Простой интерпретатор с нуля на Python (часть 3)

Содержание

Простой интерпретатор с нуля на Python #1
Простой интерпретатор с нуля на Python #2
Простой интерпретатор с нуля на Python #3
Простой интерпретатор с нуля на Python #4

Разъяснение к публикации

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

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

Читать полностью »

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

Читать полностью »

Торрент сервер Demonoid вернулся к жизни

Похоже на то, что один из крупнейших торрент-серверов мира Demonoid, вернулся к жизни. Этот торрент-сервер связан примерно с 400 тысячами торрент-файлов и более, чем миллионом пиров. Пока что неясно, когда весь ресурс вернется к полноценной жизни, но раздачи торрента, во всяком случае, ожили.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js