понедельник, 30 апреля 2012 г.

Справочник лекарственных средств 2012 (Довідник Лікарських засобів) в мобильном телефоне

Здесь выложили справочник лекарственных средств Украины по состоянию на 01.03.2012.
Справочник сделан в программе Microsoft Visual FoxPro.
Приемы переделки для мобильного:
  1. Распаковал архив. Часть файлов в формате .mht. Это архив с html картинками и дополнительными файлам внутри. Проблема в том, что имя файла mht не равно имени файла htm внутри. Но это не страшно. Зашел в папку с mht из Total Commander и нажав Alt-F9 (добавил галочку для создания  папок соответствующих имени архива). После этого ctrl-b (показ файлов без учета папок). Удалил по привычке картинке и дополнительные файлы. После этого групповое переименование. Выделяем все (Ctrl-A) и нажимаем Ctrl-M. В поле "Маска имени файла" надо написать [P] и нажимаем "Выполнить". Теперь есть более 11000 файлов htm с правильными именами файлов (обьем 1.7 Гб)
  2. Внутри бывших mht используется html encode (буквы русского языка закодированы в виде &#и четырех цифр). Попросил родственника написать скрипт перекодирования html encode в utf-8. Скрипт вот
    import os
    import re
    import string
    
    def _callback(matches):
        id = matches.group(1)
        try:
            return unichr(int(id))
        except:
            return id
    
    def decode_unicode_references(data):
        return re.sub("&#(\d+)(;|(?=\s))", _callback, data)
    
    def dir_list2(dir_name, *args):
        fileList = []
        for file in os.listdir(dir_name):
            dirfile = os.path.join(dir_name, file)
            if os.path.isfile(dirfile):
                if len(args) == 0:
                    fileList.append(dirfile)
                else:
                    if os.path.splitext(dirfile)[1][1:] in args:
                        fileList.append(dirfile)
        return fileList
     
    if __name__ == '__main__':
        logs = ""
        try:
            os.makedirs('_utf8')
            logs += "_utf8/ CREATED" + "\n"
        except OSError:
            pass
    
        fileList = dir_list2('')
    
        print "in progress",
        for f in fileList:
            if f.endswith(".htm"):
                f1 = open (f, "r")
                _text = f1.read()
                f1.close()
                try:
                    text = _text.decode("utf-8")
                    text = string.replace(text, "charset=us-ascii", "charset=utf-8")
                    text = decode_unicode_references(text)
                    text = text.encode("utf-8")
                    open("_utf8/"+f, "w").write(text)
                    #print f + " OK"
                    logs += f + " OK"
                except Exception as inst:
                    try:
                        text = _text.decode("cp1251")
                        text = string.replace(text, "charset=windows-1251", "charset=utf-8")
                        text = decode_unicode_references(text)
                        text = text.encode("utf-8")
                        open("_utf8/"+f, "w").write(text)
                        #print f + " OK"
                        logs += f + " OK"
                    except Exception as inst:
                        #print f + " FAILD"
                        logs += f + " FAILD"
                logs += "\n"
                print '.',
        try:
            open("test2.log", "w").write(logs)
        except:
            pass
    
        raw_input("\nPress the enter key to exit.") 
  3. Скрипт работает в python 2.6.5 (возможно и выше)
  4. Индексы в формате dbf переделал в html с помощью openoffice (открыл и сохранил).
  5. Дальше банальная чистка с помощью словогрыза.
  6. В бывших dbf убирал таблицы и с помощью словогрыза и текстового редактора (замена элементов таблицы на простое оформление. Не забываем переделать ссылки на mht
  7. Последний шаг конвертации с помощью isilox.
  8. Результат здесь 

воскресенье, 29 апреля 2012 г.

Прочитанное Николай Федорович Замяткин "Вас невозможно научить иностранному языку".

Прочитал Николай Федорович Замяткин "Вас невозможно научить иностранному языку". Кстати на сайте автора она лежит в pdf. Книга забавна, верить полностью наверное не стоит (ну не произвел на меня впечатления пассаж про перевод географического названия оксфорд), но прислушаться вполне.

Nokia Symbian Samsung Android перенос (миграция) адресной книги массовый импорт .vcf

Мигрировал с Symbain Nokia e63 на Samsung Android. Под Windows 7 синхронизировал с windows контактами адресную книгу. Импорт csv как то не совпал с моей логикой. Экспортировал в много .VCF. Samsung Kies импортирует по одной!!! Восток видимо дело очень тонкое.
Но открываем командную строку, переходим в папку .vcf и делаем волшебную команду copy /B *.vcf all_in_one.vcf. Одним импортом импортируем все контакты. Не забываем проверить все руками. У меня есть контакты на которые в номерах пришлось описывать часть мобильных как факсы :).

воскресенье, 22 апреля 2012 г.

Сделал фармакологический справочник (Довідник Лікарських Засобів)

Сделал фармакологический справочник (Довідник Лікарських Засобів) по состоянию на 01.01.2011 в формате  iSilo. Проверил рабостоспособность на Android версии на телефоне Samsung Galaxy W (I-8150). Искать как обычно большими буквами. http://ifolder.ru/30075088 .По логике можно попробовать на symbian, windows mobile, iphone.