• Какой язык программирования выбрать?

    @mamkaololosha
    Прочитайте SICP
    newstar.rinet.ru/~goga/sicp/sicp.pdf
    Ответ написан
    Комментировать
  • Какие видеокурсы по изучению английского языка посоветуете?

    StrangeAttractor
    @StrangeAttractor
    Я в своё время (ещё на чёрнобелом телеке это было) выучил по этим, говорю сейчас как на родном.

    255px-Muzzy.JPG
    Ответ написан
    1 комментарий
  • Какие средства/технологии применяются для разработки приложений для Linux?

    @uaSaint
    я просто оставлю эти ссылки:
    1. https://www.gnu.org/manual/manual.html
    2. citforum.ru/programming/unix
    Ответ написан
    Комментировать
  • Можете подсказать практичный список литературы по разработке драйверов для linux и вообще по работе в ядре?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    The Linux Kernel Module Programming Guide: https://sysprog21.github.io/lkmpg/
    Linux Device Drivers: lwn.net/Kernel/LDD3
    Understanding the Linux Kernel: https://doc.lagout.org/operating%20system%20/linux...
    Linux Kernel Development: https://raw.githubusercontent.com/jyfc/ebook/maste...
    Understanding the Linux Virtual Memory Manager: https://www.kernel.org/doc/gorman/pdf/understand.pdf
    Unreliable Guide To Locking: https://www.kernel.org/pub/linux/kernel/people/rus...

    Содержимое каталога Documentation в ядре.
    https://lwn.net/Kernel/Index/ для точечного погружения в отдельные топики.
    Каталог doc с kernel.org: https://www.kernel.org/doc/
    Ответ написан
    2 комментария
  • Как вы ведете учет прочитанных книг?

    shurph
    @shurph
    Есть различные сервисы и настольные программы для, но это всё не то…
    Есть различные сервисы и настольные программы для каталогизации книг и хранения закладок и заметок к этим книгам. Но мне такие решения не нравятся, так как авторы этих программ и сервисов навязывают своё видение. А в некоторых случаях — вы становитесь заложником особого формата для хранения данных в этих решениях.

    Поэтому я использую обычный текстовый файл в формате markdown, который лежит под системой контроля версий (git в моём случае). Каждый год я создаю новый файл.

    Выглядит это так:
    Файл разбит на две части: «К прочтению» и «Прочитано». Одна книга — одна строчка в файле.
    После прочтения книги я переношу соответствующую строчку в раздел «Прочитано» и под ней пишу свои мысли о книге. После чего коммичу изменения в репозиторий (в коммит можно также добавить какой-то комментарий о книге).

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

    Т.к. используется гит, то я могу безболезненно хранить «бекап» всего этого на каком-нибудь битбакете и, соответственно, в любое время и в любом месте иметь доступ к этим данным.
    Ответ написан
    Комментировать
  • Что не так в моем коде, и как подтянуть навыки?

    @onepavel
    Консультация и разработка мобильных приложений
    Тебе все правильно написали.
    Мой тебе совет лезть в гитхаб, качать оттуда проекты и смотреть их механику.
    Прежде чем лабать код смотрим на исходные данные.
    У тебя это json, открываем и смотрим.
    Мы видим массив одинаковых объектов. Для нашего удобства
    сообразим класс под json'овские данные
    class Product {
    int id;
    String name;
    String picture;
    String description;
    }

    Теперь нам нужно в активити их распарсить в список.
    У тебя есть объект с методом
    new JSONReadFromAsset().readJsonFromAsset(getApplicationContext());

    который возвращает json массив, а если заказчик завтра даст два таких файла !?
    мы же не хотим копипастить, а сделаем универсально и метод парсера будет возвращать сразу массив объектов, а не json данные и тогда мы выкинем лишние сущности
    ArrayList<String> nameList = new ArrayList<String>();
    ArrayList<Integer> idList = new ArrayList<Integer>();

    а вставим только один список
    List<Product> mDataList
    и тогда мы будем получать данные
    mDataList = JSONReadFromAsset.readJsonFromAsset(getApplicationContext(),"questions.json");

    Сделаем readJsonFromAsset статиком, так как JSONReadFromAsset ничего в себе не несет.
    в readJsonFromAsset должно быть что-то, вроде, такого
    readJsonFromAsset() {
    List<Product> dataList = new LinkedList();
    for () {
    Product product = new Product();
    obj = jsonArray.getJSONObject(position);
    product.id = obj.getInt("id");
    product.name = obj.getString("name");
    product.description = obj.getString("description");
    product.picture = obj.getString("picture");
    dataList.add(product);
    }
    return dataList; 
    }

    вместо методов getString, getInt я предпочитаю использовать optString, optInt
    Вариантов парсинга данных много, можно изворачиваться по разному.
    А что бы показать что ты крут, можно сделать класс Product Parcelable
    и не передавать пачку строк через бандл в интенте, а передать сразу Product объект.
    bundle.putParcelable(SomeActivity.PRODUCT, mDataList.get(position));

    В другом активити принять и с ним работать.

    Можно вот так сделать
    public static final String LINK = "ironwaterstudio.com";
    и поместить в легко доступное место или завести отдельный класс
    class Static {
    public static final String LINK =  "http://ironwaterstudio.com";
    }

    AlertDialog - насколько тебе необходимо обрабатывать setNegativeButton, попробуй не передавать обработчик кнопки, а сунуть null
    Ответ написан
    3 комментария
  • Стоит ли начать изучать язык программирования Go?

    @lookid
    Язык новый. Написано на нем "относительно" мало. Попасть в стартап уровня гугла не получится. Туда лучше возьмут джава-фулстек-кодера и обучат Go за 2-3 недели сами. Может во фрилансе есть чего. Но там говнокод чистой воды.
    Вот список проектов на Go : https://code.google.com/p/go-wiki/wiki/Projects
    Как видно это всякие мускл-враперы, библиотечки по дискретке и текстовые редакторы. Лучше учите что-нибудь более фул-стековое, а для души покодить можно и дома в стол. Я не имею в виду "бойтесь GO! Это гугл! Корпорация зла!" Go как Pascal. На Pascal много хорошего написано: квип, aimp, The KMPlayer. Свой проект можете писать на чем угодно, но дядя-работадатель будет иметь на этот счет свое мнение.
    Ответ написан
    Комментировать
  • Наставник, где мне тебя найти?

    alekciy
    @alekciy
    Вёбных дел мастер
    Можно в студию несколько примеров вопросов которые были бы заданы наставнику?
    Ответ написан
    Комментировать
  • С чего начать изучение информационной безопасности?

    @bondbig

    Очень неплохая вещь для получения базовых понятий об ИБ - подготовиться и сдать экзамен Comptia Security+.
    Есть книжки для подготовки, где как раз поверхностно, но весьма широко рассматриваются основные темы ИБ, начиная с физической безопасности, заканчивая криптографией и различными стандартами и законами в области ИБ.
    Мы всех новых сотрудников(в т.ч. и студентов-стажеров) в своей компании проводим через этот экзамен в первый год работы. Далее уже каждый сам выбирает специализацию - кто какой областью хочет заниматься.

    Ответ написан
    Комментировать
  • Математическая модель квадрокоптера

    ntkt
    @ntkt
    Потомственный рыцарь клавиатуры и паяльника
    На русском языке не подскажу, но
    scholar.google.ru/scholar?q=quadcopter+balancing+algorithm
    scholar.google.ru/scholar?q=quadcopter+dynamics
    выдает множество статей c мат. моделями, а дальше можно смотреть по их источникам, и т.д.
    Ответ написан
    1 комментарий
  • Прерываниями по таймерам Arduino MEGA?

    Ocelot
    @Ocelot
    void setup()
    {
    //------ Timer0 ----------
    TCCR0A = (1<<WGM01);   // Режим CTC (сброс по совпадению)
    TCCR0B = (1<<CS00);    // Тактирование от CLK.
                           // Если нужен предделитель :
    // TCCR0B = (1<<CS01);           // CLK/8
    // TCCR0B = (1<<CS00)|(1<<CS01); // CLK/64
    // TCCR0B = (1<<CS02);           // CLK/256
    // TCCR0B = (1<<CS00)|(1<<CS02); // CLK/1024
    
    OCR0A = 123;            // Верхняя граница счета. Диапазон от 0 до 255.
                            // Частота прерываний будет = Fclk/(N*(1+OCR0A)) 
                            // где N - коэф. предделителя (1, 8, 64, 256 или 1024)
    TIMSK0 = (1<<OCIE0A);   // Разрешить прерывание по совпадению
    
    //------ Timer1 ----------
    TCCR1B = (1<<WGM12);    // Режим CTC (сброс по совпадению)
    TCCR1B |= (1<<CS10);    // Тактирование от CLK.
                            // Если нужен предделитель :
    // TCCR1B |= (1<<CS11);           // CLK/8
    // TCCR1B |= (1<<CS10)|(1<<CS11); // CLK/64
    // TCCR1B |= (1<<CS12);           // CLK/256
    // TCCR1B |= (1<<CS10)|(1<<CS12); // CLK/1024
    
    OCR1A = 2678;           // Верхняя граница счета. Диапазон от 0 до 65535.
                            // Частота прерываний будет = Fclk/(N*(1+OCR1A)) 
                            // где N - коэф. предделителя (1, 8, 64, 256 или 1024)
    TIMSK1 = (1<<OCIE1A);   // Разрешить прерывание по совпадению
    
    //------ Timer2 ----------
    TCCR2A = (1<<WGM21);    // Режим CTC (сброс по совпадению)
    TCCR2B = (1<<CS20);     // Тактирование от CLK.
                            // Если нужен предделитель :
    // TCCR2B = (1<<CS21);                     // CLK/8
    // TCCR2B = (1<<CS20)|(1<<CS21);           // CLK/32
    // TCCR2B = (1<<CS22);                     // CLK/64
    // TCCR2B = (1<<CS20)|(1<<CS22);           // CLK/128
    // TCCR2B = (1<<CS21)|(1<<CS22);           // CLK/256
    // TCCR2B = (1<<CS20)|(1<<CS21)|(1<<CS22); // CLK/1024
    
    OCR2A = 234;            // Верхняя граница счета. Диапазон от 0 до 255.
                            // Частота прерываний будет = Fclk/(N*(1+OCR2A)) 
                            // где N - коэф. предделителя (1, 8, 32, 64, 128, 256 или 1024)
    TIMSK2 = (1<<OCIE2A);   // Разрешить прерывание по совпадению
    
    sei ();                 // Глобально разрешить прерывания
    }
    
    ISR (TIMER0_COMPA_vect)
    {
        // Обработчик прерывания таймера 0
    }
    
    ISR (TIMER1_COMPA_vect)
    {
        // Обработчик прерывания таймера 1
    }
    
    ISR (TIMER2_COMPA_vect)
    {
        // Обработчик прерывания таймера 2
    }
    


    Вместо тега CODE тег SOURCE используй, юный падаван.
    Ответ написан
    Комментировать
  • Имеет ли смысл полный рабочий день для программиста? Производительность труда?

    tri_botinka
    @tri_botinka
    Вопрос крайне интересный. Но я бы поставил его не так — не как заставить программиста дольше работать, а как сделать так — чтобы он больше делал. Т.е. организовать эффективную работу. По опыту — удавалось повысить производительность программистов раз в 10, а аналитиков почти в 12 (!). Как?

    Во-первых — проанализировав процесс и устранив все точки, где возможен re-work, переделка ранее сделанной работы. Например слабый аналитик не разобрался в требованиях заказчика и вывалил весь это мусор на кодировщика. В итоге противоречия в голове заказчика и аналитика привели к противоречиям в коде. Как устранить? — проапгрейдить аналитика, сделать формальным процесс обследования, ввести приемку BRD старшим аналитиком.

    Во-вторых — навести порядок в своем коде. Периодически делать review, вносить комментарии и пр. т.е. это все про быстроту нахождения информации. Пусть программист не шарахается по офису — выспрашивая, знает ли кто что-то по существу вопроса — а быстро найдет его в корпоративной wiki или других порталах.

    В-третьих, как ни странно — это планировка офиса. Если за спиной у программера постоянно на трубке висит саппорт, продажник или аналитик — он будет постоянно срываться. Сделайте «тихую зону» или отдельное место для кричания с заказчиком.

    В четвертых, порядок коммуникаций. Возьмите за правило — не дергать программера чаще чем в 2-3 часа. Как правило он думает в «туннельном эффекте» — декомпозируя задачку и входя в режим творения. На такую подготовку уходит 20-30 минут. Если его в этот момент выдернуть тупым вопросом — мол, дай сигарету или ты не знаешь — а где лежит постановка — то опять потребуется полчаса…

    Ну и еще в-пятых, в-десятых и пр. В итоге вы поймете — что программист зачастую имеет «циклоидный характер» — т.е. периоды максимальной интенсивности чередуются с упадком сил и апатией. И мастерство менеджера заключается во вписывании задач проекта в эти особенности конкретного человека. Может нет смысла орать и теребить — а важно дать человек просто отдохнуть и набраться сил. Для чего в офисе должны быть и зоны отдыха.

    Да, кстати — офис — тоже интересная штука. Опытные капиталисты делают офис почти домашним не зря. И аутсорсят мелкие бытовые проблемы сотрудников — типа отвезти белье в химчистку, поискать подешевле квартиру, заказать билет в театр или место в ресторане, купить продукты по списку… Это позволяет удержать сотрудника на работе дольше, застав несколько его «пиков работоспособности». Причем сам сотрудник будет вам благодарен за комфорт и решение его мелких бытовых проблем. А работодатель значительно сэкономит на оплате овертаймов.
    Ответ написан
    3 комментария
  • Приём данных от Arduino в Linux-консоли. Как?

    @howeal
    Не забывайте про stty и настройку COM порта. У меня настройка идёт такой командой.
    stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts raw

    код для Arduino:
    Serial.begin(9600);
    Serial.println("START");

    Демон, читающий каждые 3 секунды команды с Arduino и выводящий всё на консоль (на sh). Текст от Arduino попадает в переменную $LINE:

    #!/bin/sh
    insmod usbserial
    insmod ftdi_sio
    insmod cdc-acm
    
    while [ true ]
    do
    
    stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts raw
    
    	while read LINE
    	do
    	
    	echo $LINE
    			
    	done < /dev/ttyACM0
    /bin/sleep 3
    done
    
    


    Таким образом, при запуске демона Arduino сама перезагружается и пишет в консоль, при подключении/отключении производится повторная настройка порта и всё продолжает работать дальше.
    Ответ написан
    Комментировать
  • Книга о железе

    nochkin
    @nochkin
    Мне кажется, девушке намного интереснее это услышать от тебя, а не из книжки.
    Ответ написан
    9 комментариев
  • Какую книгу по Linux Kernel почитать?

    EvilMan
    @EvilMan
    Для теории сначала Таненбаума «Современные операционные системы». Потом как раз-таки Бовет и Чезати «Understanding the Linux kernel» (она же «Ядро Linux» в русском переводе). И под конец можно зачитать Роберта Лава «Linux kernel development» (Разработка ядра Linux, сейчас ожидается выпуск третьего издания на русском, если с английским плохо), которая более приземлённо раскрывает подробности реализации.
    Ответ написан
    3 комментария
  • Программу по контролю личного финансового состояния?

    philpirj
    @philpirj
    Попробуйте жениться. Тёплая ламповая жена гораздо лучше справится с этой задачей, чем поделки под мобилки.
    Ответ написан
    1 комментарий
  • Как расшифровывается STD в C++?

    rasa
    @rasa
    Верно, standard
    Ответ написан
    Комментировать
  • Чьи портреты должны висеть в кабинете информатики?

    @Eddy_Em
    Блез Паскаль, Дональд Кнут, Линус Торвальдс, Керниган & Ритчи…
    Ответ написан
    Комментировать