LINUX.ORG.RU

Избранные сообщения cryptohedge

Отправка бесплатного sms сообщения в linux; проблема запуска python скрипта

Форум — General

решил настроить отправку sms через календарь google http://habrahabr.ru/post/147583/ Все сделал как там. Все файлы лежат в

/opt/etc/calendarSMS
, владелец — root, исполнение имеет файл
sendsms
После запуска из директории
/opt/etc/calendarSMS
./sendsms -inet -sync Привет Мир!
Выдает ошибку
calendarSMS: Не установлен ntpclient время не будет синхронезировано
./sendsms: 1: ./sendsms: /opt/etc/calendarSMS/calendarSMS.py: Permission denied
calendarSMS: 
Если запускать без ключа
-inet
то выдает
./sendsms: 1: ./sendsms: /opt/etc/calendarSMS/calendarSMS.py: Permission denied
calendarSMS: 
меняю все права на файлы в директории в такой вид
-rwxrwxrwx 1 root root  194 Окт 20 23:12 calendarSMS.config
-rwxrwxrwx 1 root root 8701 Май 22  2012 calendarSMS.py
-rwxrwxrwx 1 root root 2268 Дек  1  2010 sendsms
Запускаю снова
./sendsms -inet -sync hello
Выдает
calendarSMS: Не установлен ntpclient время не будет синхронезировано
./sendsms: 1: ./sendsms: /opt/etc/calendarSMS/calendarSMS.py: not found
calendarSMS: 
конфиг
calendarSMS.config
имеет вид
[sendsms]
user: vassio@gmail.com
pw: *******
starttime: 120
endtime: 180
remindertime: 1
calendar: fafgttkq8ed2idfgfhdfidn6eok@group.calendar.google. com
attempt:11
delay:5
Советуют сделать так

Для синхронизации времени перед каждой отправкой в примере используется ntpclient. Он используется только в предыдущем пункте. В Убунте я исправил его на ntpdate и все заработало.

Но я не знаю как изменить на ntpdate корректно, ntpclient был замечен в файле

sendsms
вот часть
;;
  
  -sync)
   logger "calendarSMS:  Synchronizing time"
   if (! ntpclient -s -h pool.ntp.org >/dev/null  2>&1) then
    echo "calendarSMS: Не установлен ntpclient время не будет синхронезировано"
    logger "calendarSMS: Не установлен ntpclient время не будет синхронезировано"
   else
   logger "calendarSMS:  Synchronizing time"
   fi
  ;;

Помогите настроить.

 

moriz
()

максимальное число элементов в массиве в С?

Форум — Development

эт что же массив(еденичных элементов) по определению меньше всего адресного пространства ??

т.е если вся память адреса 0...2^64-1 то массив элементов единичного размера начинающийся с 0 адресса не может в себе содержать элемент максимального значения типа индекса

( ща когда 64 бита это не очень актуально но для 32 и тем более 16 оказывается массив(байтов) обязан быть меньше сегмента байтов.)

 , , openrange

qulinxao
()

В ядро NetBSD добавлена поддержка расширений на языке Lua

Новости — BSD
Группа BSD

В состав ядра экспериментальной ветки NetBSD включена подсистема, добавляющая в ядро поддержку Lua. Разработка подсистемы под кодовым названием Lunatik была начата в 2010 году. Поддержка Lua в ядре позволит разрабатывать динамически загружаемые расширения, изменяющие поведение существующих систем или добавляющие новые возможности.

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

  • Планировщик процессов - позволяет пользователю задать свои собственные алгоритмы для управления выполняемыми задачами и для создания различных политик планирования для независимых наборов процессов или потоков.
  • Фильтр пакетов - позволяет создавать более гибкие правила для фильтрации сетевого трафика.
  • Управление питанием - позволяет пользователю задать свои методы управления энергопотреблением. Например, пользователь может определить собственный алгоритм для масштабирования частоты CPU и напряжения на нём для экономии электроэнергии или предотвращения перегрева.

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

>>> Подробности

 ,

Valkeru
()

Помогите понять синтаксис питон

Форум — Development

Имеем код для распознавания лица.

Что значит конструкция «rects[:, 2:] += rects[:, :2]» ? Я понимаю, что в данном контексте это «x,y,dx,dy -> x, y, x+dx, y+dy», но как это понять в понятиях питона. Буду признателен за ссылку на мануал, так как python arrays[: ... :] херово гуглится из за этих символов.

(с) код взят с этого блога

#!/usr/bin/python

import cv2

def detect(path):
    img = cv2.imread(path)
    cascade = cv2.CascadeClassifier("/usr/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml")
    rects = cascade.detectMultiScale(img, 1.3, 4, cv2.cv.CV_HAAR_SCALE_IMAGE, (20,20))

    if len(rects) == 0:
        return [], img
    print rects
    rects[:, 2:] += rects[:, :2]
    print rects
    return rects, img

def box(rects, img):
    for x1, y1, x2, y2 in rects:
        cv2.rectangle(img, (x1, y1), (x2, y2), (127, 255, 0), 2)
    cv2.imwrite('detected.jpg', img);

rects, img = detect("one.jpg")
box(rects, img)

 , ,

Deleted
()

Странное поведение Selenium WebDriver + Python с Facebook

Форум — Web-development

Осваиваю Selenium WebDriver. Пытаюсь заполнить профиль на фейсбуке. Когда давлю на «Редактировать профиль, попадаю на страничку редактирования. Пытаюсь заполнить родной город. Selenium находит линк, давит, аяксом подгружается форма. В этой форме находит инпут, пишет туда родной город, из выпадающего списка вариантов выбирает нужный, кликает. Все окейна. Но когда пытаюсь засабмитить форму, то не могу обнаружить кнопку. ни по имени, ни как либо еще.
Caught exception: <class 'selenium.common.exceptions.ElementNotVisibleException'> Message: u'Element is not currently visible and so may not be interacted with' ;
в inspect element давлю на кнопку, в цссках нету ничего похожего на display:none

Паста логина и апдейта профиля проблема в _update_hometown() да в принципе проблема в любой форме на той странице. все подгружаются аяксом, все выглядят одинаково, как внешне, так и внутренне.
Короче, то ли лыжи не едут, то ли я...

 ,

foreigner_web
()

Сортировка структуры

Форум — Development

Доброе время суток.
Задался целью отсортировать структуру двумя методами.
Пузырьком и быстрой сортировкой. Сортировка qsort работает как нужно - поля меняются местами, а вот в пузырьке меняются местами только цифры, по которым происходит сортировка.
Оно и понятно, ведь со структурой мы ничего, кроме перестановки цифр не делаем.

Вопрос
Как правильно сортировать структуру пузырьком ?

typedef struct  STR{
    char fio[N];
    char dolzn[N];
    int stage;
    int oklad;
    char fack[N];
    char date_create[N];
    }
    st;

    int n=0;
    st sts[N];

int zarp(const void* a, const void* b)
{
    const st* k = (const st*)a;
    const st* m = (const st*)b;
    int s = ((k -> oklad) - (m -> oklad));    
    return s;
}

void bubble_sort() 
 {
 for (int i = 0 ; i < n ; i++)
       {
         for (int j = 0 ; j < n - 1 - i  ; j++)
          {
               if (sts[j].oklad > sts[j+1].oklad )
              {
               int tmp= sts[j].oklad;
               sts[j].oklad = sts[j+1].oklad;
               sts[j+1].oklad = tmp;  
               }
           }
        }

  print2();
  }



int main()
{
    ifstream ar("in.cpp");
    n=count(istreambuf_iterator<char>(ar),
    istreambuf_iterator<char>(), '\n');


    ifstream in;
    in.open("in.cpp");
   
   for (int i = 0; i < n; ++i)
      {
        in>>sts[i].fio;
        in>>sts[i].dolzn;
        in>>sts[i].stage;
        in>>sts[i].oklad;
        in>>sts[i].fack;
        in>>sts[i].date_create;
          }

        print();
	bubble_sort();
        
        qsort(sts, n , sizeof(st), zarp);
        print2();
	

in.close();
return 0;
}

Полный код http://pastebin.com/qLe5Juwi

 , ,

C_student
()

Исключение в деструкторе

Форум — Development

Какой профит от того, что если в деструкторе было брошено исключение (и оно пока единственное активное), то все равно продолжат вызываться деструкторы суб-классов и базовых классов, но при этом не будет выполнен ::operator delete(void*), т.е. физически память не будет освобождена (по стандарту, да и на практике).

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

 

Cupper
()

Эффективный компилятор под Android

Форум — Talks

Кажется, я понял почему современным девайсам под ведром нужно всё больше памяти и ядер.
Разбирая в дизассемблере код закрытых дров наткнулся на такие чудесные экземпляры, как:

MOV R2, #0xFF0
MOV R8, R0
MOV R9, R1
ORR R2, R2, #0xF

Вместо 1 и 4 команд надо было MOV R2, #0xFFF

MOV R6, #0
MOV R1, #0
STR R6,[SP,#0x1070]

Первая команда совем не нужна

И так весь код. У другого нативного ПО также. Около трети команд можно вообще выкинуть. Отсальная часть крайне неоптимальна.

Что это было ? Заговор производителей с разрабами ? Может, я туплю и так надо ?

 , , ,

pinus
()

Dell, Ubuntu, Openbox

Галерея — Скриншоты

Не так давно в качестве рабочей машинки был выдан Dell Vostro 3360. Зверек славный, но вот беда, окромя Ubuntu на нем сходу ничего не взлетело, а так как времени разбираться не было, пришлось временно довольствоваться данным вариантом. Постепенно выпилил практически весь хлам, который шел в стандартной поставке дистрибутива, оставив только необходимый минимум, тем не менее, при наличии возможности, планирую заменить Ubuntu на Slackware, либо (да, я слегка упорот) на FreeBSD.

Дистрибутив: Ubuntu 13.10
WM: Openbox c темой egtk
Панель: tint2
GTK: Greybird
Иконки: Elementary-xfce-darker
ШГ: Play, Liberation Mono for Powerline

Ругайте.

 , ,

gwinn
()

Переписать код на Java, чтобы он не тормозил и не жрал память

Форум — Development

Хочу переписать свою поделку с унылого C++ на Java или даже сразу на Scala. В программе очень много операций над разными двумерными объектами, поэтому большая часть данных - это координаты на плоскости и их преобразования.

Решил проверить насколько быстро такие операции будут работать в в Java:

import java.util.ArrayList;
import java.util.List;

public class CalcVectors {
    private static class Vector2D {
        public final double x, y;

        private Vector2D(double x, double y) {
            this.x = x;
            this.y = y;
        }

        public Vector2D add(Vector2D v) {
            return new Vector2D(x + v.x, y + v.y);
        }

        public Vector2D mult(Transform2D t) {
            return new Vector2D(x * t.cos - y * t.sin + t.tx,
                                y * t.sin + y * t.cos + t.ty);
        }

        @Override
        public String toString() {
            return "Vector2D(" + "x=" + x + ", y=" + y + ')';
        }
    }

    private static class Transform2D {
        public final double cos, sin, tx, ty;

        private Transform2D(double angle, double tx, double ty) {
            this.cos = Math.cos(angle);
            this.sin = Math.sin(angle);
            this.tx = tx;
            this.ty = ty;
        }
    }


    private static Vector2D calc(List<Vector2D> l, Transform2D t) {
        Vector2D res = new Vector2D(0, 0);
        for (Vector2D v : l) {
            res = res.add(v.mult(t));
        }
        return res;
    }

    private static void run(String str, List<Vector2D> list, Transform2D transf) {
        System.out.println("Start of " + str);
        Vector2D vector = null;
        int repeat = 1000;
        long started = System.nanoTime();
        for (int i = 0; i < repeat; ++i) {
            vector = calc(list, transf);
        }
        double totalTime = (System.nanoTime() - started)*1e-9;
        System.out.println("Res = " + vector);
        System.out.println("Total time = " + totalTime + " (sec)");
        System.out.println("Average time = " + totalTime/repeat + " (sec)");
        System.out.println("End of " + str);
    }

    public static void main(String[] args) {
        final int size = 1000000;
        List<Vector2D> list = new ArrayList<Vector2D>(size);
        for (int i = 0; i < size; ++i) {
            double d = (1.0*i)/size;
            list.add(new Vector2D(d, d));
        }
        Transform2D transf = new Transform2D(1.0, -2.5, 5.0);
        run("Warm Up", list, transf);
        System.out.println();
        run("Actual", list, transf);
    }
}
Запускаю вот так:
$ java -server -XX:+PrintCompilation CalcVectors
    208    1             java.lang.Object::<init> (1 bytes)
    210    2             java.util.ArrayList::add (29 bytes)
    220    3             java.util.ArrayList::ensureCapacityInternal (26 bytes)
    222    4             CalcVectors$Vector2D::<init> (7 bytes)
    222    5             CalcVectors$Vector2D::<init> (15 bytes)
    223    1 %           CalcVectors::main @ 12 (90 bytes)
    622    1 %           CalcVectors::main @ -2 (90 bytes)   made not entrant
Start of Warm Up
    630    6             java.util.ArrayList::access$100 (5 bytes)
    636    7             java.util.ArrayList$Itr::hasNext (20 bytes)
    639    8             java.util.ArrayList$Itr::next (66 bytes)
    642   10             java.util.ArrayList::access$200 (5 bytes)
    644    9             java.util.ArrayList$Itr::checkForComodification (23 bytes)
    652   11             CalcVectors$Vector2D::mult (56 bytes)
    656   12             CalcVectors$Vector2D::add (26 bytes)
    659    2 %           CalcVectors::calc @ 18 (54 bytes)
   1219   13             CalcVectors::calc (54 bytes)
Res = Vector2D(x=-2650584.18888554, y=5690885.954451363)
Total time = 32.180277053000005 (sec)
Average time = 0.03218027705300001 (sec)
End of Warm Up

Start of Actual
Res = Vector2D(x=-2650584.18888554, y=5690885.954451363)
Total time = 31.393999127 (sec)
Average time = 0.031393999127 (sec)
End of Actual
Видно, что на втором запуске JIT уже ничего докомпилировал. Получилось как-то заметно медленее, чем такой же вариант в C++:
#include <cmath>
#include <ctime>
#include <vector>
#include <iostream>

struct vector2d {
    double x, y;
    vector2d(double x = 0, double y = 0) : x(x), y(y) {}
};

vector2d operator+(const vector2d& v0, const vector2d& v1) {
    return vector2d(v0.x + v1.x, v0.y + v1.y);
}

struct transform2d {
    double cos, sin, tx, ty;
    transform2d(double angle, double tx, double ty)
    : cos(std::cos(angle)), sin(std::sin(angle)), tx(tx), ty(ty) {}
};

vector2d operator*(const vector2d& v, const transform2d& t) {
    double x = v.x*t.cos - v.y*t.sin + t.tx;
    double y = v.x*t.sin + v.y*t.cos + t.ty;
    return vector2d(x, y);
}

vector2d calc(const std::vector<vector2d>& vects, const transform2d& transf) {
    vector2d v;
    for (size_t i = 0; i < vects.size(); ++i) {
        v = v + vects[i]*transf;
    }
    return v;
}

int main() {
    std::vector<vector2d> vects(1000000);
    for (size_t i = 0; i < vects.size(); ++i) {
        double x = (1.0*i)/vects.size();
        vects[i] = vector2d(x, x);
    }
    transform2d tr(1.0, -2.5, 5.0);
    const int repeat = 1000;
    vector2d res;
    std::clock_t start = std::clock();
    for (int i = 0; i < repeat; ++i) {
        res = calc(vects, tr);
    }
    double total = ((double)(std::clock() - start))/CLOCKS_PER_SEC;
    std::cout << "Res = vector2d(" << res.x << "," << res.y << ")\n"
              << "Total time = " << total << " (sec)\n" 
              << "Average time = " << total/repeat << " (sec)" << std::endl;
}
Запуск C++:
$ ./a.out 
Res = vector2d(-2.65058e+06,5.69089e+06)
Total time = 8.52 (sec)
Average time = 0.00852 (sec)
Почти в 4 раза быстрее по сравнению с Java вариантом.

Кроме того, по памяти у Java также все гораздо хуже получилось: более 100Мб из кучи, в то время как C++ вариант 16Мб с копейками, что и ожидалось, т.к. один миллион структур vector2d как раз 16Мб и занимает.

Наверняка что-то сделал не так в Java варианте (ведь Java должна быть быстра почти как C++). Подскажите, как нужно правильно переписать Java вариант, чтобы приблизиться к C++?

 ,

kamre
()

надоело ходить на работу

Форум — Talks

Обращусь за советом к аналитикам ЛОРа по очень волнующему меня вопросу.
Дело в том, что не хочу работать в офисе ни в каком виде. На нынешнем месте я работаю уже 4 года, и мне нравится моя работа. Сразу скажу, что я не программист - я инженер с навыками программирования. Мне приходится работать с LabView, системами реального времени, немного с ядром (модули ядра, драйверы), моё знание ассемблера и С весьма среднее, но его пока хватает. Но я больше не хочу работать с 9 до 18 никогда в своей жизни.
Поверхностные поиски вакансий привели меня к мысли, что мне или придётся учить python/django/whatever для работы веб-программистом, или. Или что? Существуют ли подоходящие мне вакансии? Я не боюсь учиться, но не знаю, «в какую сторону копать». Мне 25, я бородат и невесел. Простите за сумбурность.

 , ,

hdclnr
()

Перенос файла python-программы c Win7 на Linux(Ubuntu 12.04)

Форум — General

Проблема: В Win7 {в блокноте} написан python-скрипт, сохранен в кодировке utf-8 под названием test.py Файл перенесен на Linux, открывается корректно, русские символы отображаются. Назначаются права на запуск программы. Запуск -> программа не работает{в терминале много ошибок - исчезает быстро(запомнить не удалось), создается файл sys,курсор становится в виде плюса}. Та же самая программа набранная в Linux (gedit) и сохраненная в utf-8 под названием test.py, при назначении ей прав на запуск, запускается и работает корректно.

Мнение: Думаю проблема в кодировке файла разными системами. Задача решается тривиально, если файл в Win7 сохранен в windows-1251(ANSI), методом dos2unix.

Вопрос: Как корректно переконвертировать код python-программы из utf-8 (win7) в utf-8(Ubuntu), чтобы она, назначив ей права на запуск, работала корректно???

Нюанс: Исходных файлов много (прибл 700 штук), прошу помочь решить задачу с минимальными «телодвижениями» для каждого файла. Если поможете составить грамотно bash-скрипт для автоматизации этого всего, буду очень вам признателен.

я начинающий пользователь linux.

Заранее всех благодарю.

 , , , ,

proximo9
()

Шахматы, или «Как правильно почесать руки»

Новости — Игры
Группа Игры

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

Шахматы написаны на чистом sed без использования расширений GNU. По текущему уровню реализованой логики игра ведётся по правилам XIV века. Отсутствуют рокировки и взятия на проходе, уход от шаха примитивный.

Как заявил автор, писал игру:

примерно две недели, правда с гигантскими перерывами), я пару раз порывался бросить это занятие.

Новость написана по итогам прочтениясовсем другого сайта.

>>> Узреть степень своего ничтожества

 , ,

leonidko
()

Задачки от yandex

Форум — Development

Хотела задать вопрос в talks, но почему у меня нет такой возможности. Я недавно занялась изучением программирования на c++, поэтому прошу сильно не ругаться.

Не так давно наткнулась на вакансию разработчика в yandex, и там обнаружила несколько вопросов. Страница уже удалена, но доступна в кэше: http://webcache.googleusercontent.com/search?q=cache:l4nvA4HtP5gJ:company.yan...

Не укажите на мои ошибки в рассуждениях?

Вопрос 1

Перепишите код, устранив имеющиеся в нём проблемы, но не изменяя функцию main

class Foo {
 public:
  Foo(int j) { i = new int[j]; }
  ~Foo() { delete i; }

 private:
  int* i;
};

class Bar: Foo {
 public:
  Bar(int j) { i = new char[j]; }
  ~Bar() { delete i; }

 private:
  char* i;
};

void main() {
  Foo* f = new Foo(100);
  Foo* b = new Bar(200);
  *f = *b;
  delete f;
  delete b;
}

Здесь, я, как поняла, деструкторы должны быть виртуальными, должен быть описан оператор присваивания, а так же необходимо поле хранящее количество элементов, чтобы при копировании знать, какой длины массив? Или я что-то упустила?

Вопрос 2

В каких из следующих стандартных контейнеров худшее время поиска элемента по значению — O(log(n))?

 std::vector
 std::list
 std::deque
 std::set
 std::multiset
 std::unordered_set
 std::unordered_multiset
 сортированный std::vector
 сортированный std::list
 сортированный std::deque

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

Вопрос 3

Напишите код, преобразующий 32-битное целочисленное представление ip-адреса в строковое.

Догадываюсь, что что-то нужно куда-то сдвигать =)

Вопрос 4

Есть класс Bar, предназначенный для работы в многопоточной среде. Перечислите проблемы, которые вы видите в его реализации.

class Bar {
 public:
  void Add(int i, double d) {
    Locker auto_lock_d(m_doubles_);
    Locker auto_lock_i(m_integers_);
    integers_.push_back(i);
    doubles_.push_back(d);
  }

  bool Find(int i) {
    Locker auto_lock(m_integers_);
    if (std::find(integers_.begin(), integers_.end(), i) != integers_.end())
      return true;
    else
      return Find(double(i));
  }

  bool Find(double d) {
    Locker auto_lock(m_doubles_);
    return std::find(doubles_.begin(), doubles_.end(), d) != doubles_.end());
  }
    
 private:
  std::vector<int> integers_;
  std::vector<double> doubles_;
  Mutex m_integers_;
  Mutex m_doubles_;
};

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

totik
()

Свободное ПО в электронике - 2

Галерея — Скриншоты

Этот скрин - продолжение старой темы Свободное ПО в электронике..

Скрин очередной раз демонстрирует использование СПО в области разработки электроники. На экране проект контроллера торгового автомата (Vending Machine Controller), работу по которому меня попросили сделать. Проект реальный, никакое не хобби, за это платятся деньги. Что это за автомат, я рассказать не могу, так как, наверное, нельзя пока что. :)

В мою задачу входит сделать контроллер, который подключается к хост-компьютеру по USB. Контроллер управляет матрицей моторов, задвижками, принимает сигналы с концевиков, оптических датчиков и энкодера. Также этот контроллер работает с купюро- и монетоприемником (на фотографии) по последовательному протоколу MDB (физически это «токовая петля»), а также осуществляет обмен с хост-компьютером по протоколу (пока что) Modbus RTU. На хост-компьютере будет стоять Debian GNU/Linux по моей инициативе (уже поставил). Он-то и взаимодействует с пользователем. Будет удаленный доступ к автомату, возможность менять не только ПО, но и прошивку контроллера дистанционно.

Разработка велась по привычке в gEDA (gschem, pcb). Очередной раз не рекомендую пользоваться gEDA людям со слабыми нервами. Вообще, у меня накопились претензии к этому пакету. Посмотрим на перспективу их преодоления потом, так как в процессе работы не было времени читать рассылку. :)

Какие еще интересности. Пишу прошивку и параллельно делаю симулятор автомата на базе проекта simavr. Это открытый симулятор микроконтроллеров семейства AVR, написанный на Си. Симулятор в итоге предоставляет библиотеку libsimavr.so Случано его нашел. По-моему, тут брал: http://gitorious.org/simavr. Однако с документацией там плохо, поэтому пришлось кучу времени потратить, чтобы понять, как он работает по нескольким примерам в examples и исходному коду. Я к нему прилепил симуляцию всей периферии: микросхемы драйверов моторов, драйверы для реле, датчики, движение лифта и стола в реальном времени, срабатывание концевиков, задвижек, оптических датчиков в реальном времени, микроволновая печь и прочее, симулировал протокол купюро- и монетоприемника, энкодер. Все это уже написал сам. Сейчас еще сижу и дорабатываю, хочу посмотреть на перспективу сделать автоматизированное тестирование прошивок. Пока же смотрю логи с временными отметками глазами, а надо бы эти логи как-то скриптами покромсать. Также эмулируется хост-компьютер, но сделаю так, чтобы реальное пользовательское приложение могло работать с моделью как с реальным автоматом. Зато к железу можно не прикасаться вообще. Причем доступна отладка через avr-gdb напрямую из симулятора, а еще в этом симуляторе есть генерация временных диаграмм в формате VCD, которые можно смотреть в gtkwave, но у меня эта возможность не задействована. Моделирую аварийные ситуации, ошибки протоколов.

Извините за качество фото - дома только древняя мыльница.

 , gschem, , ,

Zubok
()

У кого прикупить прокси?

Форум — Talks

Дело в следующем: Есть скрипт, который парсит сайт X, и выкладывает информацию в более структурированном виде на сайт Y.

Хотя парсер совсем не агрессивен (в один поток по одной страничке в 2 секунды), но на днях, сайт X стал жестко ограничивать частоту обращений.

Я уже хотел плюнуть и закрыть этот проект, все равно он бесплатный, но за 2 года его существования у него сложилось устойчивое сообщество, которое, как выясняется, готово поддерживать его $.

Кто-н может посоветовать у кого мне прикупить прокси с большим кол-вом ip?

А может есть уже готовые облачные сервисы, где бы я мог разместить парсер и которые могли бы по запросу изменять ip?

hi_artem
()

Немного вопросов по программированию в Linux

Форум — General

Я в основном админю, но сейчас, хочу заняться программированием. Язык для изучения выбрал python. Параллельно с этим хочу разобраться с git и vim. vim использую для редактирования конфигов, базовых знаний хватало до этого времени, теперь же хочу использовать его как IDE для python, да и не только для python.

Для питона выбрал книгу М.Лутц - Изучаем python + codeacademy.com

Собственно просьба, подкинуть литературы, желательно самой свежей и на русском по vim, git.

p.s. По git есть книжка Скота Чакона - Pro Git, норм?

 , , ,

Amet13
()

Изучение математики

Форум — Talks

Привет ЛОР, хочу почитать математику just for fun.
Подскажи что и как мне почитать/посмотреть чтобы вкурить в теорию вероятностей, мат статистику не напрягаясь и с удовольствием?

Уровень знания математики:

  • в школе было отлично
  • в техническом вузе забил и сдал предмет на от**бись


Время которое я готов потратить на изучение:

  • по 15-30 минут в день, год-два-три-пока_не_надоест

 

trofk
()

Прокачать математические способности

Форум — Talks

Кастую математиков и физиков в этот тред.

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

Уверен, что это можно сделать, но надо понять как подступиться к задаче. И да, не надо устраивать наброс г-на на вентилятор, толку в этом мало. Всем, кто хоть что-то дельное посоветует: два чая и огромное спасибо.

 ,

Quadmonster
()

Vim autocomplete - какой используете? Уже перешли на YouCompleteMe ?

Форум — General

Добрый день.

Какой используете плагин автодополнения для Vim?


  • OmniComplete
  • neocomplcache+neosnippet
  • SuperTab
  • AutoComplPop
  • как диды C-x в insert mode?
  • Tag List
  • Exuberant Ctags integration
  • clang_complete


другой какой?

В свете «A code-completion engine for Vim» YouCompleteMe от гугловца Вола Марковича, остальные, имхо, сливают конкретно и полностью.

Как говорится 'Life Changing' автокомплит. Демонстрация и подробная информация по ссылке.

Если вкратце, то заменяет все вышеперечисленные плагины, не требует никаких хоткеев (настраиваемый автоматический pop-up ), интеграция с Syntastic и другое.

Благодаря Clang-based engine идеально подходит для семейства Си: C / C++ / Objective-C / Objective-C++;
а также Jedi-based completion engine для таких языков как Python, Ruby, PHP и др.

Вообще заявлена поддержка всех ЯП.

Кто уже использует, какие впечатления?

 , ,

science
()