LINUX.ORG.RU

Сообщения trisobakov

 

Старый принтер KYOCERA ECOSYS P6021cdn - есть смысл восстанавливать?

Форум — Linux-hardware

Может тут есть ветеран сервисных центров, который перевидал всё.

Отдали древноватый цветной лазерник KYOCERA ECOSYS P6021cdn весом 30 кг разобрать на моторчики. Прка тащил, чуть жопа не отвалилась, вещь солидная. Сказали, ленту переноса надо менять, плюс картриджей нет. Чё-то стало жалко портить вещь, хотя в наше время бумагопечатание уже и выходит из жизни. Подумал может восстановить до рабочего вида, пусть стоит в углу как пианино! Насколько данная идея тупа? Лучше таки разобрать на моторчики?

 

trisobakov
()

DSP: из широкого спектра выфильтровать несколько узкополосных сигналов.

Форум — Development

Короче, есть SDR-приёмник, из которого на 160 мегабитах валится оцифрованная полоса 0…5мгц (в виде I/Q, но это не важно). В этой полосе есть несколько под-полосочек шириной скажем 6000 Гц каждая, каждую из которых хочется выдернуть и опустить по частотам в 0…6000 гц каждую и попутно пересемплировать скажем с частотой 6000*2 Гц, рассматривая и демодулируя уже потом отдельно их.

Давно не работал со всяким DSP, баттервортами, свертками и импульсными характеристиками.

Посоветуйте с какой стороны подойти к задаче, чтобы получить минимальную нагрузку на проц?

А можно так? Берём FFT от всех 5 мгц. Далее FFT-бины (корзины) соответствующие нужным нам полоскам тупо выдираем и, рассматривая эти бины как «стоящие от нуля герц», делаем над выдранными обратное FFT и готово. Тупо? Чё поумнее есть?

 

trisobakov
()

linux, C++, GUI: что минималистичнее, быстрее, дубовее и живучее - qt, gtk?

Форум — Development

Хочется напилить на крестах научную тулзу с гуём и положить на гитхаб.

Раньше много пейсал на C++/Qt5. Но осталось впечатление, что тепловозом на такси бомблю. Всё классно, но: оно жирное, содержит все свистоперди мира, код не «чистый» (слоты-сигналы-moc), проприетарщицкие угрозы.

Хочется что-то более классическое, менее подверженное играм корпораций, менее жирное, не содержащее в комплекте то, чего не просили (мне от гуи фреймворка не нужен звук, сеть и CSS/HTML5 рендерер), с более кондовым и тупым подходом к разработке (ничего кроме чистого C++, пусть и древноватого). То есть я предпочёл бы явно заинклудить libpng, libjpeg и поепацца с загрузкой файлов/ресурсов сам как удобно мне.

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

Ну и мне не нравится богомерзкий CMake, мне проще нафигарить простейший makefile - под мастдай и яблоко собираться не планирую.

Наверное это GTK3? Или что?

Что нужно от либы: рисовать основное окно, кнопки, поля ввода, крутилки, скроллбары, буферы пикселей (возможность запила бесконечной прокрутки длинной зарендеренной осциллограммы), радиокнопки, чекбоксы - ну основные компоненты, короче. Буду много работать с 2D-сонограммами, спектрограммами: короче пиксели рисовать и двигать блоки пикселей.

Спасибо.

UPDATE

Почитал срачь фкамментах. FLTK - вещь! Спасибо за наводку. Воистину C++ крестовая нативная минималистичная хрень без двух камазов доп-говна как в Qt.

FLTK-1.4 - https://github.com/fltk/fltk - взял с гитхаба, собрал, поигрался. Собралось CMake-ом на убунте в два прихлопа без ёпли и грёбли. Свой пример собрать не смог, обосрался с набором либ:

g++ -std=c++11 test.cpp -lfltk -lcairo -lX11 -lwayland-client -lpango-1.0 -lglib-2.0 -lgio-2.0 -lgthread-2.0
/usr/bin/ld: /usr/local/lib/libfltk.a(Fl_Cairo_Graphics_Driver.cxx.o): undefined reference to symbol 'g_object_unref'
/usr/bin/ld: /lib/x86_64-linux-gnu/libgobject-2.0.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

Но я не унываю - примеры в папочке «примеры» выглядят нормально. Я собираю как тупая тварь и лошара, а надо наверное через какой-то fltk-config или как там его, но это я потом пойму.

 

trisobakov
()

Ядро и epoll_wait(): почему его не тянет вернуться из ядра на первое же событие?

Форум — Development

Щач будет наркоманский вопрос, конечно. Когда epoll_wait вернулся из ядра и принёс пачку событий, почему он НЕ вернулся сразу же, когда случилось самое первое событие с первым сокетом, а позволил себе постоять в ядре и подождать ещё? Точнее так: допустим я ядро и пришёл какой-то пакет, относящийся к сокету процесса N. Как мне понять - бежать сразу будить процесс N на тему одного сокета или подождать - вдруг в следующие микросекунды навалит ещё пакетов про другие сокеты ЭТОГО ЖЕ процесса и я смогу сходить в N 1 раз оптом?

Ясно, что вопрос в ядре так не ставится, а возврат epoll_wait сразу с пачкой сокетов скорее следствие того, что ядро видит события от сетевухи тоже сразу оптом, оптом рассовывает по сокетам и потом уже смотрит какие бы процессы разбудить. И вообще работать над пакетами событий выгоднее, а не контекстсвитчить туда-сюда - это ясно. Но это все равно лишь дебильные догадки, хотелось бы почитать про сабж детальнее. Ядро разгребает накопившиеся события, относящиеся к одному процессу, не чаще фиксированного интервала, типа 1 миллисек? Сетевуха сгружает тыщи пакетов за одно прерывание? Ядро пытается контекстсвитчить не чаще N микросекунд? В общем, что является причиной того, что epoll_wait() в принципе способен вернуться сразу с пачкой евентов и его не колбасит на каждое. В то же время, если сокетов будет 10К и событие произойдёт только на 1, он вернутся достаточно шустро. Хотя наверное не так шустро, как в DPDK мире и прочем подобном?

 

trisobakov
()

Как запустить отдельный терминал, в котором бы начал выполняться твой скрипт и после CTRL+C консоль бы осталась жива?

Форум — General

Есть неизменяемый тестовый скрипт-болванка script.sh, задача которого просто занимать bash работой и выходить по CTRL+C. Примерно такой, но сойдёт любой ваш аналог:

#!/bin/bash
while [ true ]
do
   echo "Hello World"
   sleep 1
done

Хочется чего: запустить новый графический терминал типа terminator или urxvt, в котором бы этот скрипт начал работать, а по нажатию CTRL+C в запущенной консоли бы сдох скрипт и появилось приглашение баша. Делаем:

urxvt -hold -e bash -c ~/script.sh

Жмём CTRL+C - вся консоль сдыхает вместе с bash. Ну точнее, благодаря -hold мы можем посмотреть на труп, но она сдыхает.

Максимальная степень извращения, до которой дошёл в экспериментах была: (ну типа, в первом баше запустим второй баш в «интерактивном режиме», скормив второму через stdin команду script.sh).

urxvt -hold -e bash -c "echo '~/script.sh' | bash -i"

Это полный треш и угар, но он на микрометр приближает желаемое. Здесь после нажатия CTRL+C мы хотя-бы видим проблески консольного приглашения, в котором мелькает «exit» и консоль так же сдыхает.

 

trisobakov
()

Дайте совет по дизайну минималистичного мессенджера/таск-трекера.

Форум — Development

Есть достаточно стандартный дизайн мессенджера:

http://0x0.st/of0o.jpg

Не является убийцей телеграма, скорее убийцей слака. Главное назначение - деловая переписка команд, коллег по работе. Твой аккаунт не совсем твой, а часть некого спейса (терминология слака)/сервера (терминология дискорда)/корпорации.

На картинке выше показан недоделанный и достаточно стандартный дизайн - слева - контакт-лист, справа - выбранный чатик. Ну есть ещё подтреды - это когда справа открывается ещё одна панелька с тредом и всего мы видим 3 вертикальные панели.

Хочется куда-то запихать функции таск-менеджера, не теряя минималистичности и интуитивности.

Мысли:

  1. Добавлять узкую вертикальную панельку слева от левого контакт-листа, чтобы одним из пунктов там был таск-трекер - не круто. Перегрузка интерфейса слишком большая цена, а смотреть сразу на «10 серверов» как школота в дискорде - не наш выбор.

  2. Засунуть список задач в список контактов. То есть, один из контактов будет иметь тип «список задач» и при его выборе в центре интерфейса будет возникать не какой-то чатик, а отображаться отсортированный список задач. Таким образом, можно создавать много разных списков задач. Список задач - это как-бы проект наверное. То есть, в списке контактов можно создать себе проект, а можно личку с каким-то челом как в телеге, а можно иметь публичную группу про котов.

  3. Подход Артемия в его «интранетусе» - там каждый член контакт-листа - проект. Но это чатик. Проект выглядит как чатик, а сверху присобачены 3 кнопки - «чат», «задачи», «идеи». Идея херовата, поскольку сливать всё обсуждение по проекту в один сплошной чатик - это свалка, а кнопки сверху над чатиком - ну такое. Выглядит так: http://0x0.st/of0m.jpg - то есть, ты заходишь из контакт-листа в какой-либо проект, а сверху у проекта 3 раздела: «чатик», «задачи», «идеи». В чатике ты проект обсуждаешь, в тасках ставишь на него таски. Я считаю, что проект должен быть строго набором тасков, а идеи - подвид тасков (таска-подумать), а чатики должны быть просто в каждой таске.

Пока склоняюсь к пункту (2). В контакт-листе есть «контакт» вида «проект». В проекте - набор тасков. Таска - это как топик/тред - тема, описание, ответственные и комменты. То есть, таска - как-бы форум. В этом проекте (форуме) таски (треды) могут быть типов - «таска», «идея», «важный вопрос» - и все они могут быть resolved, на них можно подписаться и пополучать уведомления.

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

 

trisobakov
()

Почему дистрибутивы всё ещё считают нормальным иметь «версии»? Типа там Debian 8, 9, 10, 11? Почему это не просто Debian сквозной?

Форум — Development

Знаю такой ответ: потому что настают моменты, когда автор библиотеки «sobaka» выпиливает старый код/API в новых версиях, а двум разным софтинам «Dura» и «Mihalych» нужно разное в этой библиотеке - «Dura» хочет старые методы (потому что автор Dura помер и больше некому поддержать), а «Mihalych» хочет новые.

А почему не декларировать инновационный подход к разработке библиотек, если ты не соблюдаешь который, то ты псина и тебе не место в мире нормальных дистрибутивов? Например, захотел выпилить старые методы - идёшь нахрен - так нельзя. Обязан поддерживать в виде, обеспечивающем минимум старое поведение - то есть минимум просто ничего не делаешь. Захотел навернуть офигенно новый функционал, который конфликтует со старыми версиями - пилишь новую либу с новым именем, старую не трогаешь. Ну короче как-то так.

Возможно я козёл и такие дистры уже есть и такие манифесты уже внедрены в мир? Обсудите!

 

trisobakov
()

OpenWRT роутер + USB флешка 64 гига - сколько такое протянет для бекапов логов?

Форум — Linux-hardware

Хочу запилить 3 (или больше) дешёвые, бесшумные, маложрущие ноды-репликатора для бекапа логов. Каждая нода раз в 10 минут ходит на мой example.com/tasks, берёт таски и исполняет - чаще всего это «скачать курлом блок данных мегабайт до 10 и сохранить у себя».

По цене победила комбинация «старый роутер типа D-Link DIR-620 с USB за 300 рублей с Авито, перешитый на OpenWRT + воткнутая в него китайская нонейм-флешка на 64 гига за 250 рублей».

Сначала хотел воткнуть 500-гиговый HDD, но кажется роутер такое не вывезет по питанию - надо слегка модифицировать - пробрасывать второе чисто питающее USB-гнездо, берущее 5V с шины питания отдельными проводами.

Потом заценил тот факт, что на алике продают какие-то нонейм-флешки по 64 ГБ на развес и народ в комментах говорит, что «вроде норм».

Правильно я понимаю, что такая рандомная флешка в вышеописанном режиме работы лет 5 протянет?

Варианты «старый неттоп на intel atom» и «orange pi zero» проиграли: первый по причине дикой старости железа, которое может сдохнуть на днях чисто от старости, второе скорее по цене и избыточности ресурсов - 3 ноды на втором решении - это уже 6 косарей, а 3 старых роутера даже до косаря не дотянут - профит роутерного подхода очевиден!

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

 

trisobakov
()

Хочу загрузочную флешку с кастомным дебианом (с поднятым sshd с определённым root-паролем).

Форум — General

Хочу флешку с дебианом такую, что при загрузке с неё поднимается сеть через DHCP, поднимается sshd:22 с наличием root, pass=12345.

Смысл флешки: воткнул в подопыный комп, перезагрузил комп, подождал, нашёл его IP по MAC в DHCP-сервере, законнектился к нему по ssh root:12345 и досетапил этот комп, заинсталлив ему на sata-диск дебиан и донастроив как надо.

Я правильно понимаю, что такое сработает:

  1. Берём флешку 1, катим туда ISO с убунтой/дебианом.
  2. Грузимся с этой флешки.
  3. Втыкаем флешку 2, просим загрузившийся live-дистр установить систему на флешку 2.
  4. Грузимся с флешки 2, сетапим там sshd, добавляем его в автоподнятие, заводим нужный логин, sync, готово. Теперь флешка 2 - то, что я хочу?

План выглядит как хрень, конечно. Как правильнее? Что-то в духе «накатить свежый дебиан на LXC-виртуалку, пойти в эту виртуалку, установить туда sshd, настроить доступы и поднятие сети, выключить виртуалку, трансформировать эту фиртуалку в загрузочную флешку». Это правильный путь? Как?

Чё-то стало казаться, что достать sata-диск из подопытного компа и всё заинсталлить на этот диск через USB->sata хвост - проще всего этого, но всё равно вопрос такой волшебной флешки актуален - с ней не надо раскручивать компы.

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

 

trisobakov
()

intel atom 230 VS raspberry PI 3/banana PI/AllWinner A20 и т.п.

Форум — Linux-hardware

А зачем люди вообще берут raspberry при наличии на рынке таких Б/У-железок, как например неттопы с 4-ваттными Intel Atom 230 за 1…2 тыра? При том, что у вас есть возможность воткнуть до 4 ГБ DDR2-памяти, много USB портов, питание от такого же примерно внешнего БП, да ещё и SATA для 2.5-диска на борту, да ещё и дешевле (ну да, разобрать-помыть, термопасту поменять).

При желании сделать домашний FTP-сервак для бекапов, непонятно зачем мне может быть нужен raspberry с такой экономикой - и там и там проц будет 100% времени простаивать, зато с x86-решением у нас на борту сразу HDD с запиткой от того же БП и хорошо упрятанный в тот же корпус, а ценник - 1-2 тыра вместо 4.

 

trisobakov
()

Посоветуйте iso-образ для USB-флешки, поднимающийся в сеть через DHCP и дающий sshd с каким-то дефолтным root:12345?

Форум — General

Есть древний безмониторный комп-неттоп, на который хочется накатить условный дебиан, но из интерфейсов есть только ethernet или usb-wifi-донгл. Хочется иметь такую загрузочную флешку, чтобы этот комп, загрузившись с неё, получил по DHCP адрес и выставил на этом адресе sshd с каким-то дефолтным рутовым паролем, чтобы можно было далее пойти на него с другого компа и всё что нужно засетапить. Посоветуйте готовое iso-решение, дистр, или мануал для изготовления такой флешки на основе дебиана, если я тупое быдло в делании своих дистрибутивов и загрузочных образов?

Возможный ответ: https://askubuntu.com/questions/821009/most-simple-way-to-create-a-bootable-usb-stick-for-headless-installation-with-ss

 

trisobakov
()

«USB mass storage + 64MB RAM» vs «SATA + 1G RAM» - качать файлик из интернета.

Форум — Linux-hardware

Хочу каждые 10 минут выкачивать 1 файлик мегабайт под 64 из интернета курлом. Есть 2 варианта:

  1. перешитый на openwrt старый роутер netgear 2200 или аналогичный с 64M ram, куда можно постараться запихать скрипт или в крайнем случае написать своё решение на сишечке и скомпилить, винт подключен по USB возможно с внешним добавлением питания.

  2. orange-raspberry-banana-pi с более жирными ресурсами и SATA на плате, где хоть мегабайты в секунду из интернетов на диск записывай - всё перемелет, даже думать почти не надо.

  3. Старый неттоп, pos-терминал с авито за 2 тыр. Полноценный celeron-подобный intel-amd, но боюсь жрать питания это будет несравнимо больше, чем (1) и (2), хотя там тоже импульсный БП.

Вопрос в том, какие принципиальные жопы возникнут в первом варианте? Чего такого нельзя сделать через mass storage критичного для этой задачи (если мы предположим, что нам не важна скорость закачки)? Видимо в первом решении мы не можем угодно манипулировать разделами, MBR-рами, форматировать? Пока на ум приходит только то, что не хватит питания от одной USB-дырки роутера для запитки произвольного 2.5 HDD. Что ещё может быть в первом решении физически нереально и обламывать всю затею?

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

 , ,

trisobakov
()

Выставить 2-терабайтный HDD в интернет за 1000 руб.

Форум — Linux-hardware

Задача:

  1. Запустить в нескольких местах платку с линуксом и большим HDD, на этой платке скрипт в цикле раз в 10 секунд получает с центрального сервера задачи и по ним выкачивает себе на диск файлик в 64 мб вида «7c3ba6b2890017aac8a091510aa63bff.data» по http. Распределённая система реплико-бекапов, реплицирует блоки каких-то данных. По другой команде может этот файл запостить по HTTP куда нужно.

  2. Цена - такое надо воткнуть в нескольких точках, часть из которых может быть невозбранно ограблена/просрана/пропита - распределенная репликобекапная сеть с избыточностью, агенты которой стоят по квартирам друзей-знакомых, часть из которых может жостка забухать и зарубиться топором!

  3. «перепрошей роутер» - совет интересен, ибо эти роутеры на авито по 100 руб. Посоветуйте КОНКРЕТНУЮ дешевую модель, куда шьется openwrt и подключается диск 320…2000гб. Например DIR-300 брать видимо не надо, потому что openwrt рекомендует не юзать 4mb rom/32m ram (точно не помню) - модели, этого ему мало. Кроме openwrt ничё не знаю, да и его не знаю - никогда ничего такого не шил никуда.

 ,

trisobakov
()

Как хранить лайки/реакции в базе?

Форум — Development

Сообщенька в базе - это бинарный «документ» (лежащий в чём-то типа mongoDB или типа redis, в общем неком key=value), про который известны оффсеты до всех полей. Совершенно аналогично «туплу», который «строка» в «традиционных» табличных СУБД. В общем, сообщенька - это, можно сказать, строка в БД, в которой можно так же апдейтить/инкрементить отдельные произвольные «поля»/«колонки». В общем, скажем для простоты, что это «обычная строка в обычной БД».

У сообщеньки есть 8-битная поле/колонка - likes. Там лежит либо 0, либо 1.

Есть отдельные «микросервис» лайков - совершенно отдельная «субд», заточенная под хранение лайков - она хранит key=set, где key идентифирует пролайканный объект, тип лайка. Таким образом, можно понять сколько у этого объекта лайков, лайкал ли ты (данный uid) уже эту сущность, и автоматически не дать тебе что-то лайкнуть 2 раза.

Лайки - это частный случай реакции, реакция типа ноль. Например, если uid=123 лайкнул сообщеньку номер 10000 в чатике «zuzu», то uid=123 поставил реакцию типа ноль и в микросервисе лайков мы увидим ключ: zuzu:10000:0 в котором лежит set и в этом set мы обнаружим 123 среди прочих.

Теперь прикол в том, что показывая каждую сообщеньку, я не хочу ходить в микросервис лайков, выясняя есть ли для данной сообщеньки там ключ. Поэтому я умный и ставлю единичку в поле likes в сообщеньке, если был замечен хоть один факт лайков. Поле likes означает стоит ли ходить в микросервис лайков, выясняя сколько лайков у этой сообщеньки и лайкал ли ты её. Это сильно облегчает жизнь.

Теперь непонятно, как в сообщеньке таким же образом (как поле likes) закешировать инфу о том, что этой мессаге поставили не только лайк, но ещё и «огонь» и ещё «палец вверх».

Превратить likes в битовую маску - жопа, т.к. заранее неизвестно, сколько разных реакций возможно.

Есть идеи, как грамотно кешировать в самой строке сообщенки инфу о том, какие разные реакции у этой сообщеньки в принципе есть? Пока что приходит в голову только массивчик бинарных 16-битных чиселок, где каждое число означает, что реакция соответствующего типа вообще у этой сообщеньки хоть раз встречалась. Соответственно, когда какую-то реакцию кто-то ставит впервые, мы достаём этот массивчик, дописываем к концу новое число и сохраняем в мессагу обратно - но это некоторая жепь-ебрилло, поскольку подразумевает полный апдейт всей мессаги, ибо строка имеет переменный размер. Хранить в конце документа-бла-бла - не круто, т.к. где у него конец мы не знаем, ибо в сообщеньке есть ещё и текст переменной длины.

Ну или можно такой «массивчик», хотя на самом деле отдельный key=set хранить отдельно. Т.е. колонка likes говорит, что реакции в принципе были, далее уже достаём этот key=set и смотрим какие именно были.

 

trisobakov
()

Видяха для нейросеточек с Авито - в связи с крахом криптовалют.

Форум — Development

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

В связи с этим интересно, есть ли на этом рынке видеокарт такая, которая одновременно:

  1. была достаточно популярной у майнеров
  2. хороша для CUDA-нейросеточек по value/цена
  3. можно юзать с любым ноутом на убунте через рейзер (или как там это называется) по USB/ethernet, не собирая системник
  4. достаточно живуча у майнеров, либо есть понятный способ её проверить при покупке
  5. (минорное) она умеет так ломаться у майнеров, что монитор через неё не работает, но CUDA работает отлично (на монитор похрен, геймерства в планах нет) (в связи с этим её цена на рынке может быть дичайше низка в силу непривлекательности для гамеров)

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

 

trisobakov
()

Обсудите как лучше сделать лайки-реакции в вебморде.

Форум — Web-development

Что из двух вариантов более рулез?

  1. http://0x0.st/ou5X.jpg

  2. http://0x0.st/ou58.jpg

Подразумевается, что это будут не только лайки, но любые реакции как в slack.

Типа как тут: http://0x0.st/ou5P.jpg

Или тут: http://0x0.st/ou5N.jpg

Или тут: https://cdn.vox-cdn.com/thumbor/YWpkw2yBISghAOxm7PPi9C-eQcA=/1400x1400/filters:format(png)/cdn.vox-cdn.com/uploads/chorus_asset/file/15796408/reaction-examples.0.1537500965.png

Но обводочка кажется лишним визуальным мусором. Хочется попробовать разделять и связывать расстоянием - то есть интервал между числом и реакцией меньше, чем интервал между разным и реакциями. Все разрабы чатика в мире зачем-то не думая фигачат эту обводочку, ясное дело, копипастя друг у друга в 99% случаях, но я уже понял, что если подумать, то можно и лучше чем у лидеров индустрии.

Например лидеры индустрии выносили менюшку для сообщеньки вправо. Надо было тянуться вправо мышкой, рискуя соскочить с сообщеньки, а я придумал выделить небольшое поле слева от сообщеньки и там рисовать менюшечнвый бургер при наведении вот так: http://0x0.st/ou5A.jpg и кажется это объективно круче и удобнее. Так и с лайками - не пытаюсь передирать «как у всех», хочу понять как объективно точно лучше.

Перемещено hobbit из development

 

trisobakov
()

RSS подписка на новые темы