Как часто вас посещала мысль о трудоустройстве за границей, будь то просто временная работа или переезд на постоянное место жительство? Какую страну выбрать? Возможно ли пройти собеседования за тысячи километров по телефону и получить джоб-офер? Как будет выглядеть переезд и жизнь в другой стране? В данной статье я бы хотел поделиться личным опытом и опытом многих моих друзей работающих за рубежом.
stronciy @stronciy
Пользователь
Опыт заказа в китайских интернет-магазинах
5 мин
578KВ данной статье хотелось бы поделиться с читателями своим личным опытом о китайских интернет-магазинах, в которых мне (или моим друзьям) приходилось делать покупки. Речь пойдет именно про электронный сегмент товаров. Сразу перейду к сути, и приведу обзоры этих самых магазинов с заключительной оценкой:
+141
Как правильно покупать товары на Ebay
5 мин
183KТема Ebay в связи с его русификацией становится очень актуальной, поэтому решил поделиться с хабрасообществом несколькими советами из области как правильно покупать товары на Ebay, чтобы не нарватся на мошенников и сделать правильную покупку. Большая часть описанного основана на личном опыте.
+145
Упрощение полилинии методом Дугласа-Пекера
3 мин
3.6KПредисловие
Недавно на работе задали задачу — есть клиент с GPS устройством. Ходит, он значит по городу и записывает на это устройство каждую секунду координату своего местонахождения. Потом заходит на наш сайт и отправляет файл с записями маршрута. И в ответ получает изображение карты и поверх нарисованный маршрут по которому он двигался. Все вроде бы ничего, но есть одна проблемка — клиент может записывать хоть целый день и прислать громадный файл, а отрисовка маршрута занимает очень много времени. А он ведь мог идти по прямой линии и тогда смысл отрисовывать все точки отпадает(ценных только две крайних). Тем более рисуется она на JavaScript на клиентской стороне и если клиентская сторона это мобильное устройство вполне вероятно что маршрут он не увидит((
И потому мне надо было сделать небольшую оптимизацию — оптимально упростить ломанную линию. Для этой задачи существует метод Дугласа-Пекера, но на русском описания этого метода я не нашёл, поэтому я решил заполнить этот пробел рунета.
+21
Gmail Show M. Later
2 мин
30KНекоторое время назад, я сделал одну очень удобную штуку для Gmail
Если кратко, то этот google script позволяет создать в вашем ящике ярлыки (папки), положив письмо в которые, оно будет лежать пока не пройдет нужный срок, а потом оно снова переместится в inbox и станет не прочитанным. Мне такой штуки очень давно не хватало, т.к. часто приходят письма, на которые нужно отреагировать, но в данный момент реагировать на них возможности нету.
Есть более древние варианты в галерее скриптов, Gmail Snooze например, но они позволяют работать только с дневными интервалами и устроены таким образом, что письмо добавленное в 23:00, в 01:00 снова окажется в инбоксе. Поэтому я сначала модифицировал, а потом полностью переписал. В моей реализации, письма живут более правильной жизнью.
Если кратко, то этот google script позволяет создать в вашем ящике ярлыки (папки), положив письмо в которые, оно будет лежать пока не пройдет нужный срок, а потом оно снова переместится в inbox и станет не прочитанным. Мне такой штуки очень давно не хватало, т.к. часто приходят письма, на которые нужно отреагировать, но в данный момент реагировать на них возможности нету.
Есть более древние варианты в галерее скриптов, Gmail Snooze например, но они позволяют работать только с дневными интервалами и устроены таким образом, что письмо добавленное в 23:00, в 01:00 снова окажется в инбоксе. Поэтому я сначала модифицировал, а потом полностью переписал. В моей реализации, письма живут более правильной жизнью.
+54
Работа для программиста в США: 5 простых шагов
5 мин
292K Статья про то, что делать тем, кто хочет переехать работать в США. Я предполагаю инженерные позиции, на которые проще всего получить визы, но, возможно, статья окажется полезна и другим специалистам.
Мой опыт несколько отличается от нижеописанного (я попала на работу в США после стажировки). Но за 4 года в США пообщалась с людьми, которые попали сюда разными путями и набрала кое-какой опыт. Так что если бы я очень хотела найти работу в США сегодня, то я бы действовала примерно так, как описано ниже.
Заранее извиняюсь, если мой тон кому-то покажется наставническим — я не имею амбиций учить других жизни, просто иногда у меня получается такой стиль.
Мой опыт несколько отличается от нижеописанного (я попала на работу в США после стажировки). Но за 4 года в США пообщалась с людьми, которые попали сюда разными путями и набрала кое-какой опыт. Так что если бы я очень хотела найти работу в США сегодня, то я бы действовала примерно так, как описано ниже.
Заранее извиняюсь, если мой тон кому-то покажется наставническим — я не имею амбиций учить других жизни, просто иногда у меня получается такой стиль.
+138
Айтишник 60 уровня. Что дальше?
5 мин
130KУ многих из нас есть родители или родственники, которые находятся в одном шаге от пенсии. Хотя мне еще только немного за 30, я предлагаю вам немного расширить кругозор и, может быть, что-то пересмотреть в своей жизни.
В своей статье я хочу рассказать, что старость — это не болезнь, а период еще более активного периода жизни, и дам инструкцию от Владимира Яковлева, что делать, если вы решили не стареть.
Да да, именно вы решили, потому что вы стареете именно потому, что вы этого ожидаете.
А главный бонус в том, что можно увеличить продуктивный период жизни в 2 раза, причем на приличные еще 30 лет(!) и более. Т.е. в 60 лет у вас будет 35-40 лет продуктивной жизни, а здесь я расскажу как эту продуктивность сохранить до 90 лет и более. Интересно?
Внимание! Возрастное ограничение 30+, ваша психика может пострадать.
В своей статье я хочу рассказать, что старость — это не болезнь, а период еще более активного периода жизни, и дам инструкцию от Владимира Яковлева, что делать, если вы решили не стареть.
Да да, именно вы решили, потому что вы стареете именно потому, что вы этого ожидаете.
А главный бонус в том, что можно увеличить продуктивный период жизни в 2 раза, причем на приличные еще 30 лет(!) и более. Т.е. в 60 лет у вас будет 35-40 лет продуктивной жизни, а здесь я расскажу как эту продуктивность сохранить до 90 лет и более. Интересно?
Внимание! Возрастное ограничение 30+, ваша психика может пострадать.
Читайте пост на свой страх и риск!
+78
Обзор наиболее интересных материалов по анализу данных и машинному обучению №12 (1 — 8 сентября 2014)
6 мин
7.2KПредставляю вашему вниманию очередной выпуск обзора наиболее интересных материалов, посвященных теме анализа данных и машинного обучения. Данный выпуск получился достаточно объемным, в нем есть достаточно много материалов по Data Engineering. Все больше материалов появляется с конференции KDD 2014. Как обычно есть статьи про различные соревнования по машинному обучению, в том числе есть статьи о недавно прошедшем соревновании «ImageNet Large Scale Visual Recognition Challenge (ILSVRC)». Также есть достаточно много примеров кода на языках программирования R и Python. Есть упоминание о, как мне кажется, очень любопытном онлайн-курсе «Introduction to Computational Finance and Financial Econometrics».
+17
Новые бесплатные курсы виртуальной академии Microsoft Virtual Academy, сентябрь 2014
6 мин
24KВ этом обзоре мы поговорим про бесплатные курсы виртуальной академии Microsoft MVA, которые будут полезны как профессиональным разработчикам программного обеспечения и ИТ-про, так и новичкам. Обратите внимание, что видео-плеер на сайте для ряда курсов, которые созданы на английском языке, содержит возможность включить русские субтитры.
Хит! Язык программирования C# (часть 2)
Продолжение популярного курса от наших коллег из Украины! Этот курс может быть полезен для всех начинающих разработчиков на языке программирования C#, так как материал содержит все базовые понятия, предполагая, что слушатель не имел опыта разработки ранее. В ходе курса, слушатель узнает об основных концепциях языка, начиная с общей системы типов и, заканчивая, объектно-ориентированным программированием. Отдельные модули курса будут посвящены наиболее полезным классам в .NET Framework, которые будут полезны при дальнейшем изучении таких вопросов, как разработка Windows 8 и Windows Phone приложений. Ссылка на первую часть курса, которая уже стала хитом MVA.
Мега-хит! Английский. Серия курсов “Применение гибридных облаков”:
- Хранение данных и резервные копии – курс рассказывает о самых последних новинках и технологиях Microsoft в плане реализации стратегии хранения и резервирования данных как на предприятии так и в публичном облаке;
- Катастрофоустойчивость и высокая доступность (Disaster Recovery и High Availability) – курс с подробным введением в организацию функций катастрофоустойчивости и высокой доступности облачных решений в гибридном окружении с помощью технологий Microsoft, в частности Azure Hyper-V Recovery Manager;
- Развертывание баз данных SQL – подробный курс с описание развертывания SQL-решений в гибридном облачном окружении;
- Развертывание веб-сайтов – подробное описание развертывания веб-приложений в гибридном окружении с помощью Microsoft Azure и Azure Pack for Windows Server.
+21
Строим маршруты с помощью OpenStreetMap, OSRM и Leaflet
3 мин
55KПривет, %username%! Хочу написать маленькую статейку о том, как с помощью OpenStreetMap, OSRM и Leaflet прокладывать маршруты в своем проекте. Рассказывать что представляют из себя вышеуказанные технологии я не буду — на хабре о них писалось не раз уже, статья будет маленькая и только по делу. Итак, если вы хотите строить маршруты — прошу под кат.
+25
Руководство по собеседованию на вакансию PHP-программиста
22 мин
254KВездесущий… это определённо то слово, которым можно описать язык PHP по отношению к вебу. Он действительно вездесущ. В настоящее время, среди всех серверных языков программирования, PHP используется наиболее широко. На нём написаны более 80% сайтов, при этом следующий по популярности ASP.NET со своими 17% остаётся далеко позади.
Почему? Что позволило PHP стать настолько популярным и широко используемым? На этот вопрос нет однозначного ответа, но простота использования языка, безусловно, существенный фактор, поспособствовавший его успеху. Новички в PHP могут быстро выйти на достаточный уровень и разместить динамический контент на своих веб-сайтах с минимум познаний в программировании.
Именно в этом и заключается основная проблема поиска высококвалифицированных PHP-разработчиков. Относительно низкий порог вхождения и 20 лет развития языка привели к тому, что PHP-программисты стали такими же вездесущими, как и сам PHP. Многие из них могут на законных основания утверждать, что «знают» язык. Однако разработчики, которые действительно являются экспертами по PHP, способны создавать куда более функциональное, надёжное, масштабируемое и простое в сопровождении программное обеспечение.
Как же отличить тех, кто обладает реальной компетентностью в PHP (не говоря уже о тех, кто входит в 1% наиболее опытных кандидатов) от тех, у кого только поверхностные знания?
Почему? Что позволило PHP стать настолько популярным и широко используемым? На этот вопрос нет однозначного ответа, но простота использования языка, безусловно, существенный фактор, поспособствовавший его успеху. Новички в PHP могут быстро выйти на достаточный уровень и разместить динамический контент на своих веб-сайтах с минимум познаний в программировании.
Именно в этом и заключается основная проблема поиска высококвалифицированных PHP-разработчиков. Относительно низкий порог вхождения и 20 лет развития языка привели к тому, что PHP-программисты стали такими же вездесущими, как и сам PHP. Многие из них могут на законных основания утверждать, что «знают» язык. Однако разработчики, которые действительно являются экспертами по PHP, способны создавать куда более функциональное, надёжное, масштабируемое и простое в сопровождении программное обеспечение.
Как же отличить тех, кто обладает реальной компетентностью в PHP (не говоря уже о тех, кто входит в 1% наиболее опытных кандидатов) от тех, у кого только поверхностные знания?
+50
Sound Blaster ROAR: Boombox XXI века
5 мин
35KЕсли честно, то это один из самых сложных «обзоров», что мне доводилось писать. Попросту не знаешь, с чего начать, так как рассказать хочется обо всём и сразу. И эмоции переполняют, и голос рассудка завывает волком, и вообще «полный пэ».
SB Roar — это, с одной стороны, очередной представитель «мобильных» аудиоустройств, а с другой — мультимедиа комбайн, который просто, качественно и со вкусом решает проблему «послушать музыку». И с третьей — пожалуй, ROAR — это отличная, пусть и неосознанная, попытка воскресить легендарные для 70-х, 80-х и 90-х годов переносные аудиоцентры.
SB Roar — это, с одной стороны, очередной представитель «мобильных» аудиоустройств, а с другой — мультимедиа комбайн, который просто, качественно и со вкусом решает проблему «послушать музыку». И с третьей — пожалуй, ROAR — это отличная, пусть и неосознанная, попытка воскресить легендарные для 70-х, 80-х и 90-х годов переносные аудиоцентры.
+22
+95
Обзор наиболее интересных материалов по анализу данных и машинному обучению №4 (23 июня — 7 июля 2014)
5 мин
9.5KПрошлый выпуск обзора был полностью посвящен онлайн-курсам по тематике Data Science. Данный выпуск обзора наиболее интересных материалов по анализу данных и машинному обучению будет содержать ссылки на свежие материалы по тематике. В данном выпуске некоторое количество материалов посвящено важной теме визуализации данных. Есть несколько статей, которые описывают небольшие практические примеры анализа данных. Как обычно много статей посвящено алгоритмам машинного обучения, в том числе несколько статей посвящены популярным алгоритмам машинного обучения Deep Learning и Random Forest. Также есть несколько ссылок на интересные видеоматериалы.
+22
PHP Zend сертифицирование сегодня
4 мин
25KПричины для прохождения PHP Zend сертифицирования могут быть разными: кто-то хочет проверить свои знания, кому-то хочется выделится из огромного числа php разработчиков, а у кого-то это требование на работе. Месяц назад мне удалось успешно пройти сертифицирование, и в этой статье я расскажу как выглядит этот экзамен сегодня, где искать материалы для подготовки, а так же солью немного инфы о реальных вопросах с экзамена.
+37
Всё, что вы хотели узнать о рефакторинге, но боялись спросить
1 мин
21K Господа, рад представить вам свой новый проект — Refactoring.guru.
Сайт представляет собой каталог запахов грязного кода и, собственно, самих приёмов рефакторинга. В двух словах — это как книга Мартина Фаулера, но лучше. А именно:
Супер-мега-фишка, которой я очень горжусь — интерактивные примеры с объяснениями (внизу страницы). Такими примерами пока что покрыты первые две главы, но я работаю над тем, чтобы добавить их и в остальные главы.
Как видите, есть еще громадное поле для работы, как говорится, «если вам не стыдно за первую версию продукта — вы отрелизились слишком поздно». Тем не менее, я надеюсь, что кому-то сайт будет интересен уже сейчас.
Буду рад всем отзывам и пожеланиям! (а также лайкам и твитам)
Сайт представляет собой каталог запахов грязного кода и, собственно, самих приёмов рефакторинга. В двух словах — это как книга Мартина Фаулера, но лучше. А именно:
- Весь контент доступен на русском языке. Я старался делать описания как можно более живыми, чтобы избавиться от чувства унылости и скуки, которое возникает при чтении любой переводной книги о рефакторинге.
- Все примеры подаются на Java и PHP. Другие языки обязательно будут добавляться со временем, но я пока затрудняюсь решить, каким будет следующий, можете предлагать в комментах.
- Всё везде перелинковано. Рефакторинги сгруппированы по предназначениям и связям.
Супер-мега-фишка, которой я очень горжусь — интерактивные примеры с объяснениями (внизу страницы). Такими примерами пока что покрыты первые две главы, но я работаю над тем, чтобы добавить их и в остальные главы.
Как видите, есть еще громадное поле для работы, как говорится, «если вам не стыдно за первую версию продукта — вы отрелизились слишком поздно». Тем не менее, я надеюсь, что кому-то сайт будет интересен уже сейчас.
Буду рад всем отзывам и пожеланиям! (а также лайкам и твитам)
+99
Решение проблемы сортировки деревьев с помощью бинарного Materialized Path
2 мин
13KСтолкнулся с проблемой реализации древовидных комментариев на одном проекте, в этой заметке выкладываю своё решение.
В принципе, задача классическая, и сначала я её решил с помощью объединения Adjacency List и Materialized Path. Другими словами, в таблице добавлены колонки
В mpath хранился полный путь ветки в дереве, например /1/3/4/5/8/9, где через знак "/" перечислялись ID комментария.
При таком подходе очень легко добавлять новые комментарии практически любого уровня вложенности. Выборка при этом производилась запросом:
Проблема возникла при росте числа комментариев.
Описание задачи
- Хранение иерархических данных (древовидных комментариев) в реляционной БД MySQL
- Простое добавление узлов/ветвей
- Выборка всего дерева одним запросом, с отсортированными в нужном порядке ветвями
В принципе, задача классическая, и сначала я её решил с помощью объединения Adjacency List и Materialized Path. Другими словами, в таблице добавлены колонки
id INT(11)
parentid INT(11)
mpath VARCHAR(255)
В mpath хранился полный путь ветки в дереве, например /1/3/4/5/8/9, где через знак "/" перечислялись ID комментария.
При таком подходе очень легко добавлять новые комментарии практически любого уровня вложенности. Выборка при этом производилась запросом:
SELECT *
FROM messages
WHERE postid=$postid
ORDER BY mpath ASC
Проблема возникла при росте числа комментариев.
+12
Учебник по языку программирования D. Часть 1
10 мин
41KТуториал
Перевод
Данный пост начинает серию переводов D Programming Language Tutorial, дабы компенсировать информационный вакуум об этом системном языке. Каждая часть будет содержать константое количество материала из книги, так как оригинальные главы имеют широкий разброс в размере: от пары абзацев до нескольких печатных страниц. Все примеры кода проверяются на текущем релизе компилятора dmd 2.065, и если возникают проблемы с технической частью, прошу отписываться в комментариях.
+26
Cвежее дополнение к Visual Studio для создания кроссплатформенных приложений на HTML и JavaScript
3 мин
25KСегодня я хочу поделиться с вами еще одним дополнением, позволяющим разрабатывать кроссплатформенные мобильные приложения для Windows, Windows Phone, iOS и Android, используя Visual Studio 2013. В отличие от многих известных вам фреймворков – это дополнение абсолютно бесплатно и легко в освоении для веб-разработчика. Речь пойдет про дополнение, интегрирующее проект Apache Cordova в Visual Studio 2013.
+17
Как узнать, что ваш PHP сайт был взломан
11 мин
134KПеревод
Сайт моего друга недавно был взломан, на нем была запущена старая версия IP.Board, в которой есть уязвимость локального внедрения кода (local file inclusion). Этот пост не будет посвящен IP.Board или другому php коду, он покажет, как найти потенциально вредоносный php код на ваших серверах. Наконец, покажу пример того, что злоумышленники могут загрузить на взломанный сайт.
Что бы с чего-то начать, я бы хотел поделиться некоторыми записями из журнала доступа (access log) взломанного сайта моего друга.
Необходимо часто проверять журналы доступа на сервере, однако если вы не будете осторожны, URL такие как выше, которые на первый взгляд выглядят безобидно, могут пройти прямо мимо вас.
Два файла выше это загруженные взломщиком скрипты, как они туда попали, большой роли не играет, так как код на любых двух серверах, вероятно, будет различным. Тем не менее, в данном конкретном примере, уязвимость в устаревшей версии IP.Board была использована, и атакующие смогли добавить свои собственные скрипты в директории доступные для записи, такие как пользовательский каталог загрузки и каталог, в котором IP.Board хранит кэшированные изображения темы оформления. Это общий вектор атаки, много людей изменяют права на эти каталоги на 777 или дают им доступ на запись, подробнее об этом чуть позже.
Рассмотрим подробнее приведенные выше строки журнала, ничего не цепляет вас?
Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные.
Проверьте логи доступа
Что бы с чего-то начать, я бы хотел поделиться некоторыми записями из журнала доступа (access log) взломанного сайта моего друга.
IpreMOVED - - [01/Mar/2013:06:16:48 -0600] "POST /uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
IpreMOVED - - [01/Mar/2013:06:12:58 -0600] "POST /public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
Необходимо часто проверять журналы доступа на сервере, однако если вы не будете осторожны, URL такие как выше, которые на первый взгляд выглядят безобидно, могут пройти прямо мимо вас.
Два файла выше это загруженные взломщиком скрипты, как они туда попали, большой роли не играет, так как код на любых двух серверах, вероятно, будет различным. Тем не менее, в данном конкретном примере, уязвимость в устаревшей версии IP.Board была использована, и атакующие смогли добавить свои собственные скрипты в директории доступные для записи, такие как пользовательский каталог загрузки и каталог, в котором IP.Board хранит кэшированные изображения темы оформления. Это общий вектор атаки, много людей изменяют права на эти каталоги на 777 или дают им доступ на запись, подробнее об этом чуть позже.
Рассмотрим подробнее приведенные выше строки журнала, ничего не цепляет вас?
Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные.
+55
Информация
- В рейтинге
- Не участвует
- Откуда
- Иордания
- Дата рождения
- Зарегистрирован
- Активность