Лента тем форума «Программирование» и его подфорумов за год

А вы знаете, что на форумах снова оживлён чат?
Страницы:12

HolyBoy

Опытный


Приобрёл на днях 3g модем Huawei E352 от Мегафон. Разумеется, сразу же сильно захотелось как-то узнавать состояние счёта и, возможно, не только его. Гугление привело меня к нескольким скриптам на Perl (http://betment-6.livejournal.com/6002.html), PHP (посеял ссылку, в недрах ЖЖ где-то), Python (Форум - General - вменяемый скрипт или программа для USSD Выполнение USSD запросов под Linux / Телекомы / Хабрахабр)
PHP-скрипт не заработал, не заработали и Python'овые скрипты, кроме того, мне не очень понравился стиль, в котором они были написаны и я решил сделать свой вариант:
code python
  1. #!/usr/bin/env python3

  2.  

  3. import io, tty, base64, sys

  4.  

  5.  

  6. def main():

  7.     fd=None

  8.  

  9.     try:

  10.         fn=str(sys.argv[1])

  11.         ussd=str(sys.argv[2])

  12.  

  13.         fd=io.open(fn, 'w+b', buffering=0)

  14.         if fd.isatty():

  15.             print("Opened tty device")

  16.             tty.setraw(fd)

  17.             requssd(fd, 'AT+CUSD=1,' + to7bit(ussd) + ',15')

  18.             ans=getanswer(fd)

  19.             if ans is not None:

  20.                 print(base64.b16decode(ans.encode()).decode("utf-16-be"))

  21.         else:

  22.             print("It is non-tty device")

  23.  

  24.     except IOError as err:

  25.         print(err)

  26.  

  27.     except IndexError:

  28.         print("Usage: ussd.py /path/to/tty/modem *ussd*request#")

  29.  

  30.     finally:

  31.         if fd is not None:

  32.             fd.close()

  33.  

  34. # gets answer st as a String from file descriptor fd

  35. def getanswer(fd):

  36.     print("Waiting answer... You can break it with ^C")

  37.     while True:

  38.         try:

  39.             st=fd.readline().decode("latin1")

  40.             if st.startswith('+CUSD'):

  41.                 return st[st.index


    Дальше »»»
     
+
-
edit
 

Татарин

Координатор
★★★★★


Сначала хотел в юмор... А теперь даже и не знаю. :) Но прикольно!
code text
  1. #!/bin/bash

  2. function f() {

  3.     sleep "$1"

  4.     echo "$1"

  5. }

  6. while [ -n "$1" ]

  7. do

  8.     f "$1" &

  9.     shift

  10. done

  11. wait

 

XaHyMaH

Начинающий

В продолжение переписки.
Итак, как можно реализовать сабж. Конкретно, флажки в постах, как здесь или на a.net
Пока я нашел два варианта:
1. Опрашивать хуиз сервис. Например whois.ripe.net
2. Иметь локальную базу айпишников. Свою или покупную.
1. Медленно, но верно.
2. Быстро, но может быть неточно.
Как вариант, определить по п.2, если не получается, спросить как в п.1
Какие еще плюсы и минусы?
 

GOGI

Старожил
★★★★★
Вопрос наверное простой,
имеется массив char[n]. Как получить из него переменную типа uint, где LSB=char[m], MSB=char[m+1]? Пока единственное что получается, это uint var=((uint)char[m+1]<<8)|((uint)char[m]);
Но чисто с точки зрения логики было бы быстрее просто поставить указатель переменной uint var на позицию char[m] только можно ли так сделать в Си?
 

Сергей-4030

исключающий третье
★★★★★

Вот, вчера было нефиг делать, вспомнил, как писать сабж и написал на java (раньше только на Си писал). Однако, в силу всяких причин, на Java даже короче получается. Получилась 31 "честная" строка (т.е. каждый оператор - в своей строке, закрывающие скобки - в своей строке). При этому сохраняется "нормальная" структура программы, операторы/функции - с соответствующими отступами. Кто сможет сделать короче? :)
Исходный текст. Не смотреть пока не напишете свой! [показать]

Дальше »»»
 
Страницы:12

в начало страницы | новое
Поиск
Настройки
Персональное
Новости сайта
Статистика
Яндекс.Метрика



 
Сайт работает на сервере ETegro Technologies