[bash.org.ru] [IT Happens] [zadolba.li]

IT Happens

Клиент и саппорт. Разработчик и заказчик. Программист и программа. Вести с фронтов.

#3703: Китайская грамота

23 июля 2010, 09:00

рейтинг: 1505

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

Сейчас я работаю в Китае. Пришлось вводить данные в китайскую CMS. Как оказалось, перевода к ней не существует, а контора, которая её писала, развалилась, не оставив исходников. Вдобавок к этому CMS плохо работала в моей английской винде, часто вылетая с ошибками.

Я всегда с трепетом относился к финансовым программам, но тут Остапа понесло. Слил копию БД (благо с безопасностью было всё очень криво), за две недели написал новый фронт-энд — на русском, естественно. Функции нужные сделал так, как мне удобно. Неделю назад запустил — всё работает.

Местный админ и так был в шоке от того, что я не дёргаю его по вопросам CMS, но когда увидел, в чём я работаю...

 

#3628: Чума на оба ваши иероглифа

14 июля 2010, 12:45

рейтинг: 664

Работаю переводчиком с китайского языка в консалтинговой компании, хотя в неразумном отрочестве увлекался HTML, PHP и MySQL. В числе моих обязанностей — перевод названий компаний с китайского языка, которые добавляются в базу через специальную форму сотрудниками этих самых компаний. Всё было более-менее терпимо, пока какой-то умник не добавил порядка 50 записей одной и той же компании. Естественно, набивать перевод каждый раз, тем более что это бессмысленно, мне не хотелось, поэтому я обратился к программисту с просьбой что-нибудь с этим сделать.

— Извини, — говорит он, — но функции группового удаления нету, так что придётся потерпеть.
— А давай сделаем запрос в базу. У этой компании название уникальное; я тебе дам пару иероглифов, и ты удалишь все записи, где они встречаются.

Сказано — сделано. Когда я пересылал программисту нужные иероглифы, почувствовал себя, будто обращаюсь к колдуну или знахарю, дабы навести порчу. В качестве отвара — консоль MySQL, в качестве волос жертвы — парочка иероглифов, в качестве жертвы — невинные записи.

 

#3601: Бассейн и две трубы

11 июля 2010, 11:00

рейтинг: 890

Есть у меня несколько серверов, в задачу которых входит сбор и обработка статистики от нескольких сервисов. Вся статистика хранится в базах MySQL. И вот однажды сервер, на котором крутилась база, начал тормозить. Это было вполне предсказуемо: объём поступающих данных постоянно рос, и требовалось всё большее время на его обработку. Так как оптимизация работы базы уже не помогала, а оптимизация скриптов уже была проведена до этого, было принято решение о переносе базы на более мощный сервер. Сказано — сделано. Железо настроено, установлена CentOS 5, MySQL, подобраны оптимальные настройки базы и написан скрипт для автоматического переноса данных.

В пятницу утром запускаю тестовый прогон, который должен был воссоздать структуру таблиц. Результат успешен. Запускаю основной скрипт и наблюдаю, как начинают передаваться данные. К шести вечера скрипт всё ещё работает, хотя должен был закончить часам к трём, и рапортует о том, что успешно передаёт в среднем по 70 записей в секунду, Стоп! Как так? До этого шло по три-четыре тысячи в секунду, а сейчас 70? Начинаю проверять всё, что пришло в голову: интернет-канал в норме, нагрузка на обоих серверах в норме, зависших запросов в базе тоже нет, генерацию отчётов отключил...

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

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

 

#3600: Запомнить такие пароли легко ли?

11 июля 2010, 11:00

рейтинг: 856

Несколько лет назад, по молодости и глупости возомнив себя крутым хакером, решил я получить доступ к админской панели сайта одного товарища. Способ добраться до своей цели нашёлся очень быстро — «угон» дампа базы данных.
Не буду рассказывать о том, какими ухищрениями мне удалось этого добиться, но в скором времени заветный файлик был у меня. Ага! Вот она, таблица users. Находим нужные поля, копируем их значения. Имя пользователя: «admin», пароль... Ах ты засранец! Ну и пароль у тебя!

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

Лишь через некоторое время, всерьёз взявшись за изучение веб-технологий, я узнал волшебные слова «хеш» и «MD5».

 

#3581: Я тебя породил, я тебя и убью

8 июля 2010, 12:45

рейтинг: 675

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

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

Руки сами набрали rm -rf ~/web_project/buh_prj.

 

#3544: Я бубном разгоню звездец

5 июля 2010, 09:00

рейтинг: 797

Есть в нашем маленьком городке одна конторка на девять угрюмых человек. Делаю я в этой конторке не только свою прямую работу, но и по мере возможности обслуживаю электронное барахло, которого за многие годы скопилось приличное количество, в пределах «собери, установи, настрой, денег не проси». У Самого Мощного Компьютера, как несложно догадаться, целых девять пользователей, из которых семь путают правую и левую кнопки мыши, а на любой объект на мониторе кликают дважды, после чего удивляются результатам.

Стоит на этом СМК некая хитрая база данных, защищённая от ворюг USB-ключом, с ежемесячными обновлениями на двух болванках. В один прекрасный момент перестала эта база работать. Допрос с пристрастием выявил доброго человека, который решил очередную обнову поставить самостоятельно, после чего и наступил этот самый звездец. Шаманские танцы к вечеру заставили-таки базу работать и даже успешно обновиться, хотя и со скрипом.

Две недели спустя нахожу на столе конвертик с двумя дисками и пояснительной запиской: «Уважаемый Пользователь! Приносим извинения за допущенные технические неполадки, вызванные некорректной записью компакт-дисков с обновлениями ЭБД, и просим провести обновление с повторно полученных дисков». Интересно, если в следующий раз пришлют апдейт на грампластинках, я всё равно заставлю базу обновиться?

 

#3521: ChaosDB

1 июля 2010, 16:45

рейтинг: 805

Проектировал изначально небольшую и простую базу данных для маленькой, но гордой аутсорсинговой компании. Пришёл к следующим законам Мерфи для реляционных баз данных:

1. Не существует отношений «один к одному». Все такие отношения вырождаются в «один ко многим». Проявляются после написания полного и подробного ТЗ.

2. Не существует отношений «один ко многим» — все они вырождаются в «многие ко многим». Появляются после слов заказчика: «Может быть только так и никак иначе».

3. Не существует отношений «многие ко многим» — все они вырождаются в направленные графы. Появляются после слов заказчика: «А давайте сделаем так, чтобы когда я чешу за ухом, у меня шнурки завязывались».

4. Не существует направленных графов. Есть просто графы. Появляются после описания всех возможных и невозможных связей.

5. Не существует графов. Есть хаос.

Через полтора месяца ежедневного выноса мозгов к работе над проектом подключился главный директор, через три дня был уволен технический директор (тот, с которым я всё это время общался), а через пару недель макет БД был полностью написан и передан прикладным программистам для интеграции.

 

#3489: Не думал, не гадал он, никак не ожидал он такого вот конца

28 июня 2010, 12:45

рейтинг: 770

Отсылаю очередную выделенную порцию из базы данных на удалённый компьютер. Приходит ответ на посылку с ошибкой:

s2i_loader: Неожиданный конец файла среди информационных полей.

Задумался о жизни.

 

#3441: Минус на минус

22 июня 2010, 12:45

рейтинг: 1085

Позвали меня как-то в одну контору перенести оракловый сервер на новое железо, так как старое начало подавать признаки скорой кончины. Задача знакомая: инсталлирую сервисы, настраиваю основные параметры, заливаю базу через импорт-экспорт. Запускаю для проверки пользовательское приложение, написанное кем-то неизвестным на коленке — ошибка, причём дурацкая: «Параметр не является датой». На старом сервере то же самое приложение запускается без проблем. Настройки сервера в порядке. Сравниваю содержимое таблиц — байт в байт. Серверы одинаковые, но на первом прога работает, а на втором — нет.

Воевал с ошибкой до утра. Под конец уже думал, что умом тронулся, ибо в природе такое просто невозможно... В конце концов, конечно, нашёл. Оказалось, что приложение было написано с ошибкой в тексте запроса, вследствие чего в оператор TO_DATE() мог попасть текст, действительно не являющийся датой. Проблема же эта нивелировалась другой ошибкой, но уже на стороне сервера: на нём с рождения ни разу не собирали статистику. В результате то самое кривое значение не попадало в оператор из-за кривого плана выполнения запроса. Настраивая же новый сервер, я машинально поставил сбор статистики на таймер — для Оракла это правильно. Умный оптимизатор сразу же поменял план запроса, и две ошибки перестали компенсировать друг друга.

В общем, уходил я из той конторы под утро злой, с одной мыслью: 99% айтишных проблем мы создаём себе сами, когда ленимся выполнить мелкие, но обязательные вещи.

 
 
текст или номер истории
реклама
обратная связь
Хотите разместить рекламу?
Информация для рекламодателей.

Вопросы, предложения, что-то не так на сайте? Пишите в саппорт!
на сайте
Утверждено: 3996
Сегодня: 9
В рассмотрении: 1990
тэги
лучшие последних семи дней
3: #4027 (2191) - Месть одиночки
5: #4058 (1906) - Чую за версту
7: #4061 (1699) - В запой и разгул
статистика
Рейтинг@Mail.ru