Search
Write a publication
Pull to refresh
23
0
Anton MegaPort @AlexTest

Magento, Telegram bots

Send message

Общение скриптов из разных вкладок браузера

Reading time3 min
Views19K
Мне захотелось наладить общение скриптов из разных вкладок браузера. Будущий API SharedWorker позволяет передавать данные между разными iframe и даже вкладками или окнами. В Chrome он работает давно, в Firefox – недавно, а в IE и Safari его не видать. Но существует кроссбраузерная альтернатива, о которой мало кто знает. Давайте разбираться.

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

Утечка 191 000 адресов электронной почты из резюме Авито

Reading time2 min
Views51K
Около недели назад я при гуглении неизвестного номера (из пропущенных звонков) внезапно наткнулся на него в выдаче в виде PDF файла с Авито, который выдавал ошибку при переходе по прямой ссылке, но попал в кэш. Выглядело это как то так:

Пример выдачи

Общий вид ссылки: «m.avito.ru/[адрес объявления]/export/pdf».

Всё можно найти по запросу: «site:avito.ru inurl:export/pdf» (Google, Яндекс).

Если Google обещает 191 000 результатов (реально выводит около 640, видимо срабатывает ограничение на выдачу), то в Яндексе всего 152 ответа и кэш недоступен в явном виде (но сами адреса легко вытянуть немного модифицированными запросами вроде «site:avito.ru inurl:export/pdf mail.ru»). Период сообщений где-то с августа по ноябрь этого года.

Официальный ответ компании:

Официальный ответ

Так что это наши с вами проблемы, что компания допустила утечку наших данных в публичную сеть, всё нормально.
Читать дальше →

Как описывать товар интернет-магазина

Reading time5 min
Views19K


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

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

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

Но это слишком очевидно и правильно, поэтому так никто не делает.
Читать дальше →

Как пять неординарных кандидатов привлекли к себе внимание

Reading time2 min
Views7.4K
Пора принимать решительные меры. Берите ручку и записывайте, что делать, если на ваше резюме никто не откликнулся. Нужно иметь: немного денег, лего, смелость, камеру… и…

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

Сервисы проверки знаний [Сертификация Magento]

Reading time1 min
Views4.9K
Всем привет!

Сегодняшний скринкаст был записан для того, чтобы рассказать о сервисах проверки ваших знаний по Magento. Если у вас пока нет желания платить $260 на прохождение реальной сертификаиции или Вы просто не уверены в знаниях — данное видео наглядно покажет вам где можно пройти «пробную» сертификацию абсолютно бесплатно.
Что это даст? Для начала Вы узнаете свой текущий уровень, поймете где нужно подтянуть знания. В конечном итоге Вы прочувствуете атмосферу сдачи теста, так как на реальном тестировании у вас не будет шанса на ошибку.

Приятного просмотра!

Что такое красивый код, и как его писать?

Reading time22 min
Views209K

1. Вступление


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

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

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

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

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

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

В этом-то и заключается вся сложность: твое представление о “достойном” и “красивом” коде полностью основано на личном многолетнем опыте. Попробуй теперь передать это представление в сжатые сроки человеку с совсем другим опытом или даже вовсе без него.

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

Вредоносная программа Odlanor специализируется на компрометации игроков в покер

Reading time3 min
Views12K
Два года назад мы публиковали информацию о вредоносной программе PokerAgent (MSIL/Agent.NKY). Киберзлоумышленники использовали ее для компрометации учетных записей пользователей социальной сети Facebook, а также для кражи информации и ценных данных онлайн-игры Zynga Poker. В том случае социальная сеть Facebook была использована как платформа для распространения вредоносной программы.



Недавно наши аналитики обнаружили еще одну вредоносную программу – Win32/Spy.Odlanor, которая также ориентирована на игроков в покер. На сей раз речь идет о клиентах веб-сайтов игры в покер PokerStars и Full Tilt Poker.

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

PHP и realpath_cache

Reading time7 min
Views23K
От переводчика: разбираясь на днях с ошибкой, возникшей после деплоя сервиса, натолкнулся на эту замечательную статью про механизм кэширования файловых статусов в PHP. Предлагаю сообществу перевод.

Слышали ли вы про PHP-функции realpath_cache_get() и realpath_cache_size()? А может быть про параметры realpath_cache_size и realpath_cache_ttl в php.ini?

Кэш realpath — довольно важный механизм PHP, который нужно иметь в виду. Особенно, когда приходится работать с символическими ссылками, например, при деплое проекта. Настройка кэширования realpath может значительно влиять на быстродействие сервера и нагрузку на дисковую подсистемы сервера. Этот параметр был введен в версии 5.1, когда начали появляться первые PHP-фреймворки.

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

Адаптивное масштабирование: дизайн интернет-магазинов для больших экранов

Reading time14 min
Views21K
Предлагаю вашему вниманию перевод статьи «Responsive Upscaling: Large-Screen E-Commerce Design» автора Christian Holst.

Революция в адаптивном дизайне не за горами (если уже не случилась!), и даже не смотря на то, что интернет-магазины не взялись на адаптивный дизайн столь же агрессивно, как другие индустрии, все же это становится популярным.

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

  1. Только 18% из 50 ведущих американских интернет-магазинов, которые мы тестировали ранее, в этом году адаптировали свой дизайн под большие экраны (в то время как у 94% этих сайтов дизайн адаптирован под мобильные устройства).
  2. Почти три четверти электронных продаж все ещё совершаются на ПК, а не на мобильных устройствах (смотрите здесь, здесь и здесь).
  3. Около трети этих пользователей приходят с экранов шире 1350 пикселей (смотрите здесь, здесь и здесь). (Примечание: Разумеется, есть разница между шириной экрана и шириной браузерного окна — реальное число пользователей с браузером указанной ширины будет ниже. Мы рекомендуем вам отслеживать размеры браузерного окна в вашей веб-статистике для более полной картины того, насколько значителен этот сегмент для вашего сайта.
Читать дальше →

Zigbee для самых маленьких. Пост номер 1

Reading time6 min
Views27K
image
Около месяца назад попали в мое распоряжение модули Atmel ATZB-S1-256-3-0-C основанные на чипе ATmega256RFR2 объединяющим в себе 2.4Mhz трансивер, микроконтроллер AVX на 256 килобайт памяти и даже чип-антенну. Атмель обещали в свою очередь out of the box поддержку Zigbee для этих модулей и было принято решение строить наш mesh именно на них.

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

Звучит довольно просто, не так ли? На практике все оказалось намного прозаичнее. Основной проблемой оказалась недооценка технологической сложности атмелевского стека Zigbee, самого стандарта Zigbee, ну и переоценка собственных возможностей. Дело в том что сам я давно не програмировал на C, давно перешел на Matlab и Python, все указатели и другие средства управления ресурсами и процессами давно положил в тумбочку и выкинул ключ. Ну что-же… в мире ембеддед меня ждало много приятных неожиданностей.
Читать дальше →

IDE от JetBrains теперь доступны только в аренду

Reading time2 min
Views86K
Сегодня PyCharm предложил обновиться до IntelliJ IDEA Ultimate Edition, чему я, мягко говоря, удивился.
Перейдя по предложенной ссылке я обнаружил объявление об изменении модели лицензирования для сред разработки от JetBrains:
What products are affected?
IntelliJ IDEA Ultimate, AppCode, CLion, PhpStorm, PyCharm Professional, RubyMine, WebStorm, ReSharper, ReSharper C++, dotTrace, dotCover, and dotMemory. No changes apply to the family of server tools including YouTrack, TeamCity, Upsource, and Hub.
www.jetbrains.com/toolbox


Суть изменений сводится к тому, что вводится новый тип лицензии, позволяющий арендовать несколько сред в одной пачке (даже все вместе), добавляется модель лицензирования по подписке (то есть аренда продуктов) и отменяется бессрочная модель лицензирования (perpetual) при которой можно было приобрести продукт в пользование навсегда:
What is changing?
Perpetual licenses will no longer be available for purchase as of November 2, 2015 for selected products. A new subscription-based licensing model will replace the existing model.
www.jetbrains.com/toolbox

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

Пиринговая сеть base.network

Reading time22 min
Views29K
base.network
«Свобода — это возможность сказать, что дважды два – четыре. Если дозволено это, всё остальное отсюда следует.»
Джордж Оруэлл — «1984»

В современном мире активно развиваются различные распределенные технологии. Уже не первый год успешно функционируеют такие проекты как пиринговая платежная система Bitcoin, распределенные микроблоги (Twister), распределенные мессенджеры (например, Tox). Дошло дело и до полноценных распределенных сайтов.

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

Предлагаемая система base.network призвана устранить подобные недостатки пиринговых сетей и объединить в себе все технические преимущества централизованных систем со свободой обмена информации в распределенных сетях.
Это своего рода попытка создать защищённую децентрализованную сеть с малым временем отклика и свойствами автономности, отказоустойчивости и масштабируемости. Ключевой целью проекта является способность функционировать даже под давлением организаций, осуществляющих контроль, пресечение публикации, а также ограничение доступа к информации в Интернете. Все аспекты проекта доступны в виде открытого исходного кода и бесплатны. Это позволяет убедиться, что программное обеспечение делает именно то, что заявлено, и дает возможность всем разработчикам совершенствовать защиту сети от попыток ограничить свободное распространение информации.
Читать дальше →

Хаб для программистов в Мексике: открыли компанию и начинаем искать виллу

Reading time3 min
Views4.9K


Прошлый пост про идею Хаба для предпринимателей и программистов в Мексике мы публиковали, чтобы посмотреть возникнет ли интерес со стороны читателей и получили достойный отклик. Кто-то написал комментарии, вопросы в почту и социальные сети, а кто-то даже позвонил. Многим понравилось позитивное видео, так что если вы его еще не смотрели, то вот оно. Под катом ответы на некоторые конкретные вопросы наших читателей, а также рассказ о текущем состоянии дел CaboHub.
Читать дальше →

Первый взгляд на Scaleway

Reading time5 min
Views55K
Случайно попалось упоминание о хостинге Scaleway.

Плюсы:
  • 4 ядра
  • 2 гигабайта оперативки
  • 50 гигабайт SSD диск
  • bare-metal! (то есть, нет никаких, даже чисто теоретических накладных расходов на виртуализацию)
  • за все это всего 3 евро в месяц! Очень дешево!

Но есть особенность: это ARM процессор. Да-да! Это 4-ядерный ARM процессор.


Любопытно же!?

Почему автомобильный аккумулятор нельзя использовать в ИБП?

Reading time7 min
Views371K
Предыстория

На тот момент, когда я первый раз попробовал заменить в ИБП старый аккумулятор ёмкостью 7Ач на старый автомобильный аккумулятор номинальной ёмкостью 65Ач, я ещё не знал, почему этого нельзя делать, и как это может навредить здоровью аккумулятора, самому ИБП и людям, проживающим в одном помещении с ним.

Доработка бесперебойника не заняла много времени, но профит был заметен сразу же. Сто-ватная нагрузка в виде домашнего «сервера» продержалась порядка двадцати часов без внешнего питания, хотя раньше 10 минут — это был предел, которого хватало разве что на корректное завершение работы. Более длительных отключений за время эксплуатации данной модификации замечено не было, а подключение интернета по технологии GPON позволяло серверу оставаться в сети даже при масштабных отключениях электроэнергии.



Но это было давно. А год назад мне случайно попалось на глаза объявление о продаже нескольких бывших в употреблении ИБП APC 3000 за смешные деньги, 4000 рублей за штуку, без аккумуляторов, но рабочие. Немного подумав, решил что надо брать, причём сразу два, правда к моменту покупки цена успела подняться до 5000 рублей за штуку, но меня это не остановило, ведь в магазине за те же деньги предлагали лишь варианты на 1кВт, да и то от всяких noname фирм с не очень лестными отзывами и модифицированным синусом.
Читать дальше →

ТОП-10 видео природы, снятых дронами

Reading time1 min
Views14K
image

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

Лучшие подходы к управлению версиями баз данных

Reading time5 min
Views17K
Перевод статьи «Database versioning best practices», опубликованной на сайте enterprisecraftsmanship.com.

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

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

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

15 тривиальных фактов о правильной работе с протоколом HTTP

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

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



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

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

Firefox превращается в Chrome, отказываясь от поддержки старых дополнений

Reading time2 min
Views30K
image

Вчера Mozilla Foundation объявила о грядущих серьёзных изменениях в работе браузера Firefox. Стараясь не отставать от современных тенденций, браузер переходит на такую схему работы, где каждой отдельной вкладке будет соответствовать отдельный процесс. К сожалению, внедрение этой схемы означает, что браузеру придётся отказаться от поддержки дополнений, работающих при помощи текущего API.

Проект Electrolysis, который как раз должен обеспечить работу каждой вкладки со своим процессом, появился ещё в 2009 году. Но с тех пор он крайне вяло развивался, и постоянно переходил в стадию заморозки. Основная проблема, с которой столкнулись разработчики – невозможность подружить проект с существующим API для дополнений.

Текущее API браузера называется XPCOM (кросплатформенная объектная модель компонентов), позволяющая писать дополнения на различных языках: C++, JavaScript, Java, через слой абстракции XPConnect. Эта система помогла появлению огромного количества дополнений к браузеру, что сыграло не последнюю роль в наборе им популярности.

XPCOM позволяет дополнениям взаимодействовать с браузером на достаточно интимном уровне, дополняя и изменяя поведение всех его компонентов, от элементов интерфейса до рендера страниц. К сожалению, эта система имеет и обратную сторону – её очень сложно скрестить с идеей Electrolysis и отдельными процессами для каждой вкладки. По канонам этой идеи все дополнения должны работать в отдельных от основного браузера процессах, а в такой форме их взаимодействие с внутренностями Firefox крайне затруднено.
Читать дальше →

Увеличиваем время работы ИБП. Выбор аккумуляторов

Reading time7 min
Views83K
Близится осень и приближаются проблемы с электроэнергией. Вполне типичная ситуация, когда отопление еще не включили, а все соседи начинают обогреваться электрокаминами и различными обогревателями, просаживая и без того нагруженную сеть. Бури ломают провода, провода рвутся, оборудование оказывается без питания. Выручает спасительный бесперебойник или ИБП. Но что делать, когда авария на линии продолжается больше часа, а бесперебойник вырабатывает весь ресурс за десятки минут? Наращивать емкость встроенных батарей. Как это сделать правильно и безопасно, а также как подобрать необходимую батарею я сегодня расскажу на реальном примере.


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

Information

Rating
Does not participate
Registered
Activity