Как стать автором
Обновить
1
0
Василий Титовченко @unibasil

Программист

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

Как удалить «неудаляемые» приложения со смартфона

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


Чтобы увеличить привлекательность смартфонов, производители ставят на них как можно больше разных программ. Это понятно. Просто берём и удаляем ненужное… Стоп.

Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция 'disable'). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

Всё это надо зачистить.
Читать дальше →
Всего голосов 156: ↑145 и ↓11+168
Комментарии203

Правда о регистре символов, которую должны знать программисты

Время на прочтение9 мин
Количество просмотров29K
На конференции North Bay Python в 2018 году я делал доклад об именах пользователей. Информация из доклада по большей части была собрана мною за 12 лет поддержки django-registration. Этот опыт дал мне гораздо больше знаний, чем я планировал получить, о том, насколько сложными могут быть «простые» вещи.

В начале доклада я, правда, упомянул, что это не будет очередное разоблачение из серии «заблуждения по поводу Х, в которые верят программисты». Таких разоблачений можно найти сколько угодно. Однако мне подобные статьи не нравятся. В них перечисляются разные вещи, якобы являющиеся ложными, однако очень редко объясняется – почему это так, и что нужно делать вместо этого. Подозреваю, что люди просто прочтут такие статьи, поздравят себя с этим достижением, и потом пойдут находить новые интересные способы делать ошибки, не упомянутые в этих статьях. Всё потому, что они на самом деле не поняли проблем, порождающих этих ошибки.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+33
Комментарии6

Elite: Dangerous и CosmosDB

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

image


o7 cmdr!


Теплым карантинным вечером, в одном из телеграмных чатиков по Elite: Dangerous разгорелась дискуссия на тему: а у какого типа звезд чаще всего встречаются землеподобные планеты?


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


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

Читать дальше →
Всего голосов 53: ↑53 и ↓0+53
Комментарии23

Сборка недорогой домашней NAS-системы на Linux

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


Я, как и многие другие пользователи MacBook Pro, столкнулся с проблемой недостачи внутренней памяти. Если говорить точнее, то используемый мной ежедневно rMBP был оснащен SSD объемом всего 256GB, чего, естественно, надолго не хватало.

А когда я плюс ко всему стал записывать видео во время своих полетов, ситуация только усугубилась. Объем заснятых материалов после таких полетов составлял 50+ GB, и мой несчастный SSD на 256GB очень скоро заполнился, вынудив меня приобрести внешний диск на 1TB. Тем не менее, спустя один год, и он перестал справляться с генерируемыми мной объемами данных, не говоря уже о том, что недостаток избыточности и резервного копирования делали его неподходящим для размещения важной информации.

Итак, в один момент я решил собрать NAS большого объема в надежде, что эта система продержится хотя бы пару лет, не требуя очередного апгрейда.

Эту статью я написал в первую очередь как памятку о том, что именно и как я делал на случай, если мне потребуется сделать это снова. Надеюсь, что и для вас она окажется полезна, если вы соберетесь делать то же самое.
Читать дальше →
Всего голосов 52: ↑35 и ↓17+34
Комментарии175

Восемь интересных возможностей PostgreSQL, о которых вы, возможно, не знали

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

Привет, Хабр! Приглашаем на бесплатный Demo-урок «Параллельный кластер CockroachDB», который пройдёт в рамках курса «PostgreSQL». Также публикуем перевод статьи Тома Брауна — Principal Systems Engineer at EnterpriseDB.

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

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

Переписывание истории репозитория кода, или почему иногда можно git push -f

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


Одно из первых наставлений, которое молодой падаван получает вместе с доступом к git-репозиториям, звучит так: «никогда не ешь жёлтый снег делай git push -f». Поскольку это одна из сотен максим, которые нужно усвоить начинающему инженеру-разработчику ПО, никто не тратит время на уточнение, почему именно так нельзя делать. Это как младенцы и огонь: «спички детям не игрушки» и баста. Но мы растём и развиваемся как люди и как профессионалы, и однажды вопрос «а почему, собственно?» встаёт в полный рост. Эта статья написана по мотивам внутреннего митапа на тему: «Когда можно и нужно переписывать историю коммитов», который я проводил, когда работал в компании FunCorp.
Читать дальше →
Всего голосов 42: ↑39 и ↓3+45
Комментарии31

Перечисления в PHP

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

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

Читать дальше →
Всего голосов 20: ↑17 и ↓3+25
Комментарии51

Рецепты по приготовлению офлайн-приложений

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


Доброго времени суток, друзья!

Представляю вашему вниманию перевод замечательной статьи Джейка Арчибальда «Offline Cookbook», посвященной различным вариантам использования сервис-воркера (ServiceWorker API, далее по тексту — просто воркер) и интерфейса кэширования (Cache API).

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

Если не знакомы, то начните с MDN, а затем возвращайтесь. Вот еще неплохая статья про сервис-воркеры специально для визуалов.

Без дальнейших предисловий.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии2

Исповедь Битрикс хейтера

Время на прочтение47 мин
Количество просмотров175K
Что-то много развелось в последнее время статей про минусы битрикса, и их опровержений. Раз уж пошла такая пьянка, то и я добавлю свои 5 копеек.
В комментариях к статьям писали, что не хватает конкретики, примеров, более глубокого обзора.

Данная статья — попытка этот обзор написать. Хотя нет, это скорее пост ненависти и боли (может даже немного нытья). Это такой расширенный вариант поста про минусы от pistol. Я постараюсь описать большинство тех вещей, которые раздражают именно меня и моих коллег в Битриксе. Постараюсь собрать в одном посте все те минусы, которые доставляют ежедневно очень много боли. Под конец я постараюсь сделать выводы.

Кто я такой? Да в общем-то, обычный разработчик. Работаю с битриксом с ноября 2010 года (5.5 лет). Работаю только с битриксом, не сделал ни одного коммерческого проекта на других CMS, не использовал фреймворки в создании сайтов. По роду деятельности я занимаюсь в основном интернет-магазинами, их созданием, поддержкой и развитием.
Читать дальше →
Всего голосов 122: ↑111 и ↓11+100
Комментарии180

Создание библиотеки из VUE компонента и публикация на NPM

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

Достаточно давно занимаюсь разработкой на Vue.js, но вот упаковывать компоненты для публикации как то не приходилось. Недавно пришла идея интересного компонента, и я решил поделиться им с сообществом. Но дело в том что я не смог найти исчерпывающего руководства на эту тему в рунете. Поэтому, изучив вопрос, решил поделиться своим решением на эту тему.
Читать дальше →
Всего голосов 4: ↑3 и ↓1+3
Комментарии0

PostgreSQL 14: Часть 1 или «июльский разогрев» (Коммитфест 2020-07)

Время на прочтение11 мин
Количество просмотров11K
Выход PostgreSQL 13, о возможностях которого мы уже писали, планируется только осенью. Ничего принципиально нового в нем уже не появится. Поэтому самое время перейти к PostgreSQL 14.

Жизненный цикл нововведений 14 версии состоит из 5 коммитфестов. Первый из которых — июльский — уже завершился, а значит есть что обсудить.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии14

Моделирование звука гитарных нот с помощью алгоритма Карплуса-Стронга на python

Время на прочтение8 мин
Количество просмотров11K
Знакомьтесь, эталонная нота ля первой октавы (440 Гц):


Звучит больно, не правда ли? Что еще говорить о том, что одна и та же нота звучит по-разному на разных музыкальных инструментах. Почему же так? Все дело тут в наличии дополнительных гармоник, создающих уникальный тембр каждого инструмента.

Но нас интересует другой вопрос: как этот уникальный тембр смоделировать на компьютере?

Примечание
В этой статье не будет разбираться почему это работает. Будут лишь ответы на вопросы: что это и как это работает?

Всего голосов 29: ↑28 и ↓1+39
Комментарии7

Памятка для пострадавшего от слезоточивого газа/перцового баллона

Время на прочтение22 мин
Количество просмотров150K
Началась эта история еще в докоронавирусное время, еще тогда когда в моем LAB66 была всего пара тысяч подписчиков и работал бот-автоответчик. И вот в этот бот как-то постучался русскоговорящий парень из Чили и задал вопрос про слезоточивый газ. Про то, как жить вообще, когда по улицам ездят автомобили и распыляют «просроченный слезоточивый газ из Бразилии». Тогда я клятвенно пообещал вопросом этим заняться. Прошло… а прошло всего лишь полгода (хотя из-за обилия событий в 2020 кажется, что прошло 20 лет :) и я решил наконец написать парню ответ. Извини за задержку, Sergio из Чили, я был занят коронавирусом… Читай ответ под катом!


Всякое в жизни бывает, а вдруг да и пригодится...
Всего голосов 103: ↑100 и ↓3+136
Комментарии116

PostgreSQL Antipatterns: «Должен остаться только один!»

Время на прочтение3 мин
Количество просмотров15K
На SQL вы описываете «что» хотите получить, а не «как» это должно исполняться. Поэтому проблема разработки SQL-запросов в стиле «как слышится, так и пишется» занимает свое почетное место, наряду с особенностями вычисления условий в SQL.

Сегодня на предельно простых примерах посмотрим, к чему это может приводить в контексте использования GROUP/DISTINCT и LIMIT вместе с ними.

Вот если вы написали в запросе «сначала соедини эти таблички, а потом выкинь все дубли, должен остаться только один экземпляр по каждому ключу» — именно так и будет работать, даже если соединение вовсе не было нужно.

И иногда везет и это «просто работает», иногда — неприятно сказывается на производительности, а иногда дает абсолютно неожидаемые с точки зрения разработчика эффекты.


Ну, может, не настолько зрелищные, но…

«Сладкая парочка»: JOIN + DISTINCT


SELECT DISTINCT
  X.*
FROM
  X
JOIN
  Y
    ON Y.fk = X.pk
WHERE
  Y.bool_condition;

Как бы понятно, что хотели отобрать такие записи X, для которых в Y есть связанные с выполняющимся условием. Написали запрос через JOIN — получили какие-то значения pk по несколько раз (ровно сколько подходящих записей в Y оказалось). Как убрать? Конечно DISTINCT!
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии19

Профессиональное применение инструментов разработчика Chrome: 13 советов

Время на прочтение7 мин
Количество просмотров34K
Автор статьи, перевод которой мы сегодня публикуем, хочет поделиться советами по профессиональной работе с инструментами разработчика браузера. А именно, эти советы рассчитаны на программистов, которые по какой-то причине решили, что их основным браузером будет Google Chrome.


Читать дальше →
Всего голосов 44: ↑43 и ↓1+56
Комментарии12

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

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

Привет, меня зовут Дарья, и я Frontend-разработчик юнита Гео в Авито. Хочу поделиться опытом того, как мы сделали на вебе новый поиск по карте, заменив кластеры более удобным решением и сняв ограничение на количество отображаемых объектов.


В статье я расскажу, какая перед нами стояла задача и как мы справлялись с проблемами в процессе реализации.


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

Красные глаза

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


Привет, представляю вашему вниманию небольшой туториал по оформлению приглашения командной строки с эффектом красных глаз.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+36
Комментарии33

Boot manager для 486-го компьютера

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

Введение


Всё началось с того, что меня несколько расстраивало отсутствие возможности загружаться с дисковода на старой плате Socket 3. CD-приводы в то время ещё не были распространены и разработчики BIOS даже не задумывались о предоставлении такой опции. Да и операционные системы распространялись на дискетах. Чуть позднее, когда ОС (в основном конечно Windows) стало удобнее устанавливать с диска, чем с пары десятков дискет, придумали так называемые загрузочные floppy, содержавшие драйвер дисковода и передававшие ему управление непосредственно. Но это на мой взгляд костыль и некрасиво. Я начал искать более изящное решение и даже в какой-то момент собирался купить SCSI-контроллер за много денег и привод к нему, но нашлась альтернатива.

Читать дальше →
Всего голосов 38: ↑37 и ↓1+43
Комментарии98

Минимальный WebGL в 75 строках кода

Время на прочтение6 мин
Количество просмотров8K
Современный OpenGL и, в более широком смысле, WebGL, сильно отличается от старого OpenGL, который я изучал в прошлом. Я понимаю, как работает растеризация, поэтому вполне разбираюсь в концепциях. Однако в каждом прочитанном мной туториале предлагались абстракции и вспомогательные функции, усложнявшие мне понимание того, какие части относятся к самим API OpenGL.

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

Во-первых, нужно поблагодарить создателя использованного мной туториала. Взяв его за основу, я избавлялся от всех абстракций, пока не получил «minimal viable program». Надеюсь, она поможет вам начать освоение современного OpenGL. Вот что мы будем делать:


Равносторонний треугольник, зелёный сверху, чёрный в нижнем левом углу и красный в нижнем правом, с интерполированными между точками цветами. Чуть более яркая версия чёрного треугольника [перевод на Хабре].
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии5

Теплое ламповое интернет-радио

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

Это самая долгосрочная поделка в моей жизни. От идеи до конечной реализации, так чтобы ей можно было пользоваться, прошло 12 лет! За это время произошло колоссальное количество событий: переезды, рождения, смерти, но идея была со мной и ни смотря ни на что, я её доделал. И хочу рассказать о путях, терниях, чаяниях, которые сопровождали данную поделку и что из этого в результате получилось.
Всего голосов 74: ↑72 и ↓2+95
Комментарии162

Информация

В рейтинге
Не участвует
Откуда
Владивосток, Приморский край, Россия
Зарегистрирован
Активность