6 заметок с тегом

Лайфхак

А нужно ли вообще рассматривать все жалобы в соцсетях?

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

Возникает логичный вопрос: Как уменьшить нагрузку на модераторов?

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

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

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

display:none

html блоку или вообще удалить его, а саму жалобу отправить в  /dev/null. Если вариантов жалоб несколько, то можно скрыть этот функционал в «Жалобы — Прочее» или прямо так и назвать «Жалобы — Я не согласен с юзером». Работает, проверено.

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

Исключение — время прохождения модерации при публикации в AppStore или Google Play, в этот момент нужно включать модерацию любого контента на максимум, особенно 18+. Ведь хрен знает, на что может пожаловаться модератор маркета, а релиз, обычно, очень не хочется задерживать из-за возни с какой-то мелочью.

 Нет комментариев    16   2023   Лайфхак

Передача большого количества картинок между серверами

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

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

Какой есть выход из этой ситуации? Верно, создать архив без сжатия:

Вот так, если предпочитаете tar:

tar -cf ./archive.tar /path/to/folder

И так, если больше нравится zip:

zip -qq -0 -r ./archive.zip /path/to/folder

Но как показывают замеры времени, tar справляется с задачей простой сборки файлов в один в разы быстрее.

После передачи файла по сети распаковать его можно так:

Для tar архива:

tar -xf ./archive.tar

И для zip архива:

unzip -qq ./archive.zip
 Нет комментариев    90   2020   Лайфхак

Обрабатываем некорректно сохраненные в лог JSON данные

С месяц назад, при записи JSON данных в лог, забыл отформатировать их json.dumps из питоновского dict’a в нормальный вид, а просто записал его при форматной печатью, преобразовав dict в str. Само собой, получил кучу данных в неудобоваримом виде, эх.

Как исправить? Стандартный json.loads теперь не воспримет такую строку как корректный JSON, т. к. с точки зрения формата она не валидна. Можно решить эту проблему при помощи функции ast.literal_eval.

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

Пример работы:


import ast
import json

# Наш преобразованный в строку dict()
s = "{'a': 'Text with \\'quotes\\''}"
j = json.loads(s)
# Получаем ошибку парсинга из-за одинарных кавычек
>> json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

# Парсим строку в dict
j = ast.literal_eval(s)
print(j)
>> {'a': "Text with 'quotes'"}
# Теперь уже дампим данные корректно
print(json.dumps(j))
>>{"a": "Text with 'quotes'"}

 Нет комментариев    92   2020   Python   Лайфхак

Keras 2.3 & TensorFlow 2

При обновлении до Keras >= 2.3 и Tensorflow >= 2.0 в старых многопоточных приложениях может начать выскакивать ошибка:

AttributeError: '_thread._local' object has no attribute 'value'

Решить ее можно заменив импорты

from keras import что_нужно

на

from tensorflow.keras import что_нужно

UPD: Если после обновления появилось вот такое:

Error : Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.

Весьма вероятно, что cuDNN теперь не подходит по версии для TensorFlow ибо старовата. Найти нужную версию можно тут.

UPD 2: При обновлении cuDNN еще можно заметить, что в официальной инструкции установки на linux из архива не указано, что после копирования нужно сделать симлинки на so’шники. Иначе после sudo ldconfig будет ошибка (далее, вместо библиотеки версии 7, подставьте свою):

/usr/local/cuda/lib64/libcudnn.so.7 is not a symbolic link

Т. е. надо:

$ cd /usr/local/cuda/lib64/

$ ls -lha libcudnn*
-rwxr-xr-x 1 root root 374M июн 13 04:27 libcudnn.so
-rwxr-xr-x 1 root root 374M июн 13 04:27 libcudnn.so.7
-rwxr-xr-x 1 root root 374M июн 13 04:27 libcudnn.so.7.6.5
-rw-r--r-- 1 root root 373M июн 13 04:27 libcudnn_static.a

$ sudo rm libcudnn.so libcudnn.so.7
$ sudo ln libcudnn.so.7.6.5 libcudnn.so.7
$ sudo ln libcudnn.so.7 libcudnn.so
$ sudo ldconfig
 Нет комментариев    26   2020   Keras   TensorFlow   Лайфхак

Экспресс пиар

Экспресс-дизайн от студии Артемия Лебедева — просто охуенная штука. Всего за 100000 рублей можно хорошо попиариться на всю страну развеселым логотипом, получить гору трафика на сайт и повысить узнаваемость бренда.

Убиваем сразу три зайца одним выстрелом:

  1. Студия экспериментирует, ищет новые подходы в дизайне за деньги заказчика и не сильно беспокоится о его мнении насчет получившегося результата.
  2. Название студии все время на слуху.
  3. Заказчик получает бурление говн в соцсеточках, с упоминанием названия компании и ссылками на его сайт. А значит будет трафик и рост ссылочной массы, что неплохо повлияет на поисковую выдачу в будущем.

А на сам логотип, в целом, всем плевать.

 Нет комментариев    59   2019   PR   Дизайн   Лайфхак
Ранее Ctrl + ↓