Где-то с неделю назад мой смартфон под Cyanogenmod 7 совершил ритуальное самоубийство...
А дело было так: я зачем-то полез в настройки разработчика, телефон подтормозил, и я случайно попал пальцем по настройке "show running processes". Телефону этого хватило, чтобы уйти в reboot и никогда из него не выйти. Он догружался до этапа ввода pin-кода, и перезагружался снова и снова. Попытки обогнать падающий процесс и снять настройку успехом не увенчались.
Только потом я понял, что у меня есть shell доступ к телефону, так как adb я не выключал.
Google помочь с ходу не смог, пока я не нашёл, случайно, вот этот текст: http://forum.xda-developers.com/showpost.php?p=10695052.
Дальнейшее было делом техники:
sqlite3 /data/data/com.android.providers.settings/databases/settings.db
# sqlite3 /data/data/com.android.providers.settings/databases/settings.db
SQLite version 3.7.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE bluetooth_devices (_id INTEGER PRIMARY KEY,name TEXT,addr TEXT,channel INTEGER,type INTEGER);
CREATE TABLE bookmarks (_id INTEGER PRIMARY KEY,title TEXT,folder TEXT,intent TEXT,shortcut INTEGER,ordering INTEGER);
CREATE TABLE secure (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT);
CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT);
CREATE INDEX bookmarksIndex1 ON bookmarks (folder);
CREATE INDEX bookmarksIndex2 ON bookmarks (shortcut);
CREATE INDEX secureIndex1 ON secure (name);
CREATE INDEX systemIndex1 ON system (name);
sqlite> select * from system where name = "show_processes";
1376|show_processes|0
sqlite> update system set value = 0 where _id = 1376;
sqlite> #
И система была вылечена.
(Вру, на самом деле пришлось вытащить карточку памяти, так как система была на ней и править это руками с картридера. Дело в том, что телефон упорно жаловался на то что он не может записать эту базу данных.)
Написать cgi скрипт на python - 15 минут
Добавить туда форму для посылки данных и обработчик - ещё 15 минут
Прочитать кучу документации и заняться отладкой, чтобы выяснить, почему не посылаются данные и какого чёрта ничего не работает с методом POST в форме - 2.5 часа.
Обнаружить, что в форме в полях было написано id вместо name, так как форма скопирована из другого проекта - бесценно.
Вы держите собственный вебсервер?
У вас есть свой VPN?
Вы оказались в сети, где заблокировано всё кроме HTTP и HTTPS?
Выход есть!
Оказывается, можно повесить OpenVPN на 443 порт вместе с вебсервером. Для этого, в настройках openvpn указывается опция port-share
proto tcp
port 443
port-share 127.0.0.1 8443
Теперь осталось только перевесить вебсервер на адрес: 127.0.0.1:8443 (или любой другой свободный), ну и перезапустить сервисы вебсервера и openvpn.
Для lighttpd в debian, адрес настраивается в /etc/lighttpd/conf-enabled/10-ssl.conf:
fhunter@fhunter:~/$ cat /etc/lighttpd/conf-enabled/10-ssl.conf
$SERVER["socket"] == "127.0.0.1:8443"
PS. Оказывается есть ещё более интересная штука: http://www.rutschle.net/tech/sslh.shtml, позволяющая мультиплексировать ssh, https, openvpn на одном порту. Скажем нет кривым корпоративным политикам.
После предыдущего поста, я ожидал чего угодно, только не нормального обслуживания. Но... по совету знакомых я отправился не в то почтовое отделение, куда собирался.
В итоге - огромное спасибо сотрудникам отделения 192076. Письмо отправили быстро, без проблем и очередей.Что после всего встреченного в предыдущем посте - очень сильно удивило.
PS. От Санкт-Петербурга до США, авиапочтой письмо дошло за 12 дней. Быстро однако :).
О да. Почта России впереди планеты всей. Сегодня я собрался отправить банальное заказное письмо. Первое за 15 лет.
Место действия: Санкт-Петербург, Выборгская сторона. Вышел с работы в обеденный перерыв. За 50 минут ожидания я успел только купить конверт, написать адрес и дождаться в очереди, пока пройдёт 3 или 4 человека. Одно работающее окно, однако. Когда я уходил, перед мной ещё было столько же человек.
Один час сорок минут на то, чтобы отправить заказное письмо? Да это же просто праздник какой-то, товарищи!
Хорошо, по дороге с работы, а дело было уже после 20:00, я вспомнил, что есть два отделения почты, которые работают круглосуточно. Обнаруживаю одно из них, по адресу: 191036, Невский проспект, 87А.
Теперь место для юридически заверенного скриншота:
И что же я увидел, придя на место?
Временно отделение работает
с 8:00 до 20:00 по будним дням.
Потеряно 28 рублей на метро и минимум полчаса времени. А если считать вместе с первым в этот день заходом, то ещё и обеденный перерыв.
Зачем Почте России сайт? Всё равно ведь информация на нём не соответствует действительности.
PS. Редактировать новости они уже научились, о чём мы убедились после пожара. А вот сайт держать в обновлённом состоянии пока нет.
Я люблю свою работу.
Я приду сюда в субботу.
И конечно в воскресенье.
Здесь я встречу день рожденья,
Новый год, восьмое марта.
Ночевать здесь буду завтра.
Плащ-палатка, вещмешок,
У супруга будет шок.
Если я не околею,
Не сорвусь,
Не озверею,
Здесь я встречу все рассветы,
Все закаты и приветы.
От работы дохнут кони.
Ну а я... Бессмертный пони.
© Не известен.
Недокументированный код, он как Ктулху...
Сначала ты борешься с ним в своих мыслях.
Потом он сжирает твои мозги.
Потом следует черёд безумия.
Настраиваем модем Huawei e173 в linux.
Как настроить модем Huawei e173 для Мегафона, с использованием интерфейса wwan (Не ppp).
Для настройки потребуются: утилита chat, для ввода pin-кода. Набор следующих chat скриптов:
pin_needed:
ABORT '+CPIN: SIM PIN'
ABORT ERROR
TIMEOUT 1
'' atz
OK ''
'' at+cpin?
'+CPIN: READY' ''
ABORT ERROR
TIMEOUT 1
'' atz
OK at+cpin=$PIN
OK ''
wwan_up:
TIMEOUT 1
'' atz
OK 'at\^ndisdup=1,1,internet'
OK ''
А так же скрипт положенный у меня в /usr/local/sbin/wwan_preup: wwan preup
#!/bin/sh
if /usr/sbin/chat -e -f /usr/local/etc/pin_needed < /dev/ttyUSB0 > /dev/ttyUSB0 ;then
/usr/sbin/chat -e -f /usr/local/etc/wwan_up < /dev/ttyUSB0 > /dev/ttyUSB0
exit 0
fi
PIN=xxxx /usr/sbin/chat -e -E -f /usr/local/etc/pin_enter < /dev/ttyUSB0 > /dev/ttyUSB0
/usr/sbin/chat -e -f /usr/local/etc/wwan_up < /dev/ttyUSB0 > /dev/ttyUSB0
После того, как эти скрипты будут добавлены, нужно добавить следующий кусок в /etc/network/interfaces:
iface wwan0 inet dhcp
hwaddress ether 00:01:02:03:04:05
pre-up '/usr/local/sbin/wwan_preup'
PS. Пост написан с этого самого модема
Относительно недавно, в мои руки попал старый плоттер Poltik MDG-116.
После раскопок в сети выяснилось:
- Это серия плоттеров, MDG-1*, модели отличаются интерфейсами. В моём случае, это были последовательный и параллельный интерфейсы.
- Последовательный интерфейс работает с параметрами 4800 бит/c, 7e1. Он выведен обычным 25-pin разъёмом со стандартной распайкой. Используются 3 провода (GND, RTS, TXD). (На моём плоттере не заработала линия RTS, по причине непропаянной ножки микросхемы).
- Параллельный интерфейс реализует стандарт ИРПР-М, и, на современных машинах, без доработки не работает.
- Используется набор команд DXY-GL, аналогичный плоттерам Roland DXY-800 и Roland DXY-101.
- Плоттер представляет из себя клон Sharp-CE515P http://pocket.free.fr/html/sharp/ce-515p_e.html. (Механика очень похожа, используемые перья (EA-850B/EA-850C) совпадают. ТТХ аналогичны.
Система команд
Плоттер может работать в 2-х режимах, тестовом и графическом.
В графическом режиме плоттер использует систему команд DXY-GL.
Всего поддерживаются 12 однобуквенных команд:
Команда | Параметры | Описание | Комментарии | |
---|---|---|---|---|
Z | Сброс плоттера. Переход в текстовый режим. | Пишущий элемент переводится в крайнее левое положение. | ||
J | n | Выбор цвета пера | 1 - чёрный, 2 - синий, 3 - зелёный, 4 - красный | |
D | x1, y1, ..., xn, yn | опустить перо и прочертить линию в абсолютных координатах | количество точек не ограничено | |
H | Перевод пера в начальную точку | |||
F | Назначить текущую точку в качестве начальной | |||
I | dx1, dy1, ..., dxn, dyn | опустить перо и прочертить линию в относительных координатах | ||
L | n | выбор штрихования для линии | 0 - сплошная, 1 - пунктир, 2...15 - различные штриховки | |
M | x1, y1, ..., xn, yn | поднять перо и перейти в точку в абсолютных координатах | ||
P | c1c2cЗ ... сn | вывод символов | уточнить таблицу символов и способ кодирования | |
Q | n | выбор направления вывода символов | 0 - 0 градусов, 1 - 90 градусов, 2 - 180 градусов, 3 - 270 градусов | |
R | dx1, dy1, ..., dxn, dyn | поднять перо и перейти в точку в относительных координатах | ||
S | n | изменение размера символов | 0 - 2.8 мм, 1 - 5.6 мм, 2 - 11.2 мм, 3 - 22.4 мм |
ТТХ
Разрешение: 0.1мм
Особенности
Использованные материалы:
Картинка подчищена, для защиты невиновных.
This blog is powered by ikiwiki.