воскресенье, 14 августа 2016 г.

Питерская тройка. Запись 4-я: вторая глава КС.

  • Архитектура компьютера: 76/790 (+0)
  • Современные операционные системы: 110/1109 (+0)
  • Компьютерные сети: 76/954 (+36)
Итого: +36.

На данный момент выполнено на 9.2%: 262/2853

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

Следующая задача на неделю: 2-я глава АК, т.е дочитать до 172-й страницы (+96 стр).

воскресенье, 7 августа 2016 г.

Питерская тройка. Запись 3-я: первые главы.

  • Архитектура компьютера: 76/790 (+28)
  • Современные операционные системы: 110/1109 (+68)
  • Компьютерные сети: 40/954 (+4)

Итого: +100 стр.

На данный момент выполнено на 7.9%: 226/2853

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

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

среда, 3 августа 2016 г.

Питерская тройка. Запись 2-я: вступление.

  • Архитектура компьютера: 48/790 (+10)
  • Современные операционные системы: 42/1109 (+42)
  • Компьютерные сети: 36/954 (+12)

Итого: +64 стр.

На данный момент выполнено на 4.4%: 126/2853

Пока во всех трёх книгах описывается про историю развития компьютеров; стоит упомянуть, что про советские разработки в этой области там, соответственно, ни слова.

Так как информация в данных книгах на данных страницах носит лишь документальный характер, то читается это весьма легко, хотя порой и нудно.

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

вторник, 2 августа 2016 г.

Питерская тройка за год. Запись 1-я: постановка задач.

В течение нескольких недель были приобретены три книги издательства "Питер" на сумму 4136р. Книги серьёзные и недешёвые и поэтому, для того чтобы они себя окупили, их необходимо прочитать и осмыслить.

Питерская тройка
Глядя же на их внушительный объём, опускаются руки и в связи с этим было решено приступить к достижению этой цели посерьёзней: с помощью планирования, систематичного чтения и публичных отчётов в данный блог. Что из этого выйдет покажет время, а пока приступим.

Список книг:

  • Архитектура компьютера. Э.Таненбаум, Т.Остин. 6-е издание: 790 стр
  • Современные операционные системы. Э. Таненбаум, Х.Бос. 4-е издание: 1109 стр
  • Компьютерные сети. В. Олифер, Н.Олифер. 5-е издание: 954 стр
Итого: 2853 стр.

Цель: прочитать данные три книги.

Сроки: 1 год.

Дата начала: 01.08.2016
Дата окончания: 01.08.2017

На данный момент выполнено на 2.2%: 62/2853

Сводка:

  • Архитектура компьютера: 38/790
  • Современные операционные системы: 0/1109
  • Компьютерные сети: 24/954

вторник, 2 февраля 2016 г.

RFC 1945 - Hypertext Transfer Protocol ч2 (конспект)

Информация, которая не является частью стандарта HTTP/1.0

Internet media type "message/http"


Помимо определения протокола HTTP/1.0 это документ служит в качестве спецификации для Internet media type "message/http" (Зарегистрирован IANA).

Media Type name:         message
Media subtype name:      http
Required parameters:     none
Optional parameters:     version, msgtype
       version: The HTTP-Version number of the enclosed message
                (e.g., "1.0"). If not present, the version can be
                determined from the first line of the body.
       msgtype: The message type -- "request" or "response". If
                not present, the type can be determined from the
                first line of the body.
Encoding considerations: only "7bit", "8bit", or "binary" are permitted
Security considerations: none

понедельник, 1 февраля 2016 г.

RFC 1945 - Hypertext Transfer Protocol (конспект)


HTTP - объектно ориентированный протокол уровня приложений, без запоминания состояния.

HTTP использует "[major].[minor]" (версии). Минорные версии не изменяют структуру сообщения, а мажорные да. Этот документ определяет версии 0.9 и 1.0.

Соединения (клиент) - Запрос - Ответ - Закрытие (сервером)

   запрос ------------------>
UA --------------v-----------O
   <------------------- ответ
 
   запрос ----------------------------->
UA ---v--- A ---v--- B ---v--- C ---v--- O
   <------------------------------ ответ
 
   запрос ---------> (кеширование ответа от C)
UA ---v--- A ---v--- B - - - C - - - O
   <---------- ответ

среда, 27 января 2016 г.

RFC 3921 - WHOIS Protocol Specification (конспект)

 
WHOIS-протокол используется для предоставления информации всем пользователям Интернета о существующих сервисах.

WHOIS сервер слушает 43 порт для запросов от клиентов.
Ответ от сервера приходит в понятном для человека виде.
Сервер после посылки ответа, сразу же закрывает соединение.

Отсутствуют средства для определения кодировки.
Отсутствуют механизмы защиты.

вторник, 26 января 2016 г.

RFC 821 - Simple Mail Transfer Protocol (конспект)


Описание

Наименование: Simple Mail Transfer Protocol
Среда передачи: TCP и подобные
Модель SMTP: [отправитель]<-----команда/ответ---->[получатель]
Вид узлов: промежуточный и конечный.

Команда: команда и параметры
Ответ: код и описание

среда, 20 января 2016 г.

Требования к идеальному сайту

Внешний вид

  • Красивый и аккуратный дизайн.
  • Уникальность дизайна.
  • Ухоженность: отсутствие битых ссылок, актуальность дат и т.п.
  • Удобная ширина текста и приятный шрифт (читабельность).
  • Наличие мобильной версии сайта, резинового дизайна.
  • Возможность отключить фоновое видео, если оно имеется.
  • Возможность для людей с ограниченными возможностями взаимодействовать с сайтом.
  • Переключение языков, если это имеет смысл.
  • Не изменяйте оформление указателя мышки, если сайт не игровой.
  • Отсутствие всплывающих окон и других html/js плюшек: если же они есть, то должна быть возможность их закрыть, желательно сразу же.
  • Отсутствие неуместных плюшек в принципе: календари, часы и т.п.
  • Отсутствие фонового звука.
  • Отсутствие вымогательства на какое-либо действие. Пример: сначала отображается нормальная страница, затем через некоторое время всплывающее окно с просьбой зарегистрироваться для дальнейшего просмотра.

вторник, 19 января 2016 г.

Шаблон проектирования Одиночка

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

Два примера реализации:
package Singleton;
use strict;
use warnings;
use feature 'state';

my $singleton = { rand => int(rand(100)) };

sub instance {
    ref $singleton eq __PACKAGE__ 
        ? $singleton : bless $singleton, shift;
}

sub instance_with_state { 
    state $singleton = { rand => int(rand(100)) };
    ref $singleton eq __PACKAGE__ 
        ? $singleton : bless $singleton, shift;
}

1;

и тестирование для них:

суббота, 16 января 2016 г.

Изучаем содержимое стека в программе на Assembler: вычисления факториала

В качестве примера возьмём программу вычисления факториала из книги Programming from the Ground Up и исследуем стек программы во время её выполнения.

.text                        # Здесь начинается текст программы.

.globl _start                # Указываем, где расположена точка входа.

.type factorial, @function   # Помечаем factorial как функцию.
factorial:
                             # (S2), (S7)
    nop                      # Нулевая операция, удобно для отладки.
    pushl %ebp               # Сохраняем %ebp в стек. (S3), (S8)
    movl  %esp, %ebp         # Теперь %ebp указывает на вершину стека.
    movl  8(%ebp), %eax      # Помещаем в %eax 1-й аргумент функции.
    cmpl  $1, %eax           # Если он равен 1 (базовый случай),
    je    end_factorial      # то переходим к выходу из функции.

    decl  %eax               # Уменьшаем на единицу аргумент функции и
    pushl %eax               # помещаем его в стэк. (S6)
    call  factorial          # Вызываем саму себя из функции.
    movl  8(%ebp), %ebx      # Помещаем 1-й аргумент функции в %ebx.

    imull %ebx, %eax         # В %eax помещаем результат %eax * %ebx.

    end_factorial:        
        movl %ebp, %esp      # Делаем %ebp вершиной стека. (S12)
        popl %ebp            # Помещаем из стека в %ebp. (S10), (S13)
        ret                  # Выходим из функции. (S11), (S14)

_start:
    pushl $2         # Помещаем аргумент функции factorial
                     # в стек. (S1)

    call factorial   # Вызываем функцию factorial.     
    addl $4, %esp    # Очищаем стек от аргумента функции. (S15)

    movl %eax, %ebx  # Результат функции используем как код
                     # выхода из программы.

    movl $1, %eax    # Заказываем системный вызов exit
    int $0x80        # и вызываем его.
Собираем и запускаем программу:

четверг, 14 января 2016 г.

Уголовный кодекс

Список статей УК РФ, имеющих отношение к ИТ.


воскресенье, 10 января 2016 г.

Язык программирования Assembler

Для тех, кто всё-таки решился его изучить. Отличные небольшие видео-уроки с кучей практических примеров по этой теме, правда на английском языке.
  1. Assembly Primer For Hackers (Part 1) System Organization - изучаем упрощённую схему компьютера: CPU, память, устройства ввода/вывода и шину, а так же регистры и их структуру.
  2. Assembly Primer For Hackers (Part 2) Virtual Memory Organization - изучаем распределение адресов в виртуальной памяти для каждого процесса в системе Linux, исследуя файл /proc/{proc_id}/maps.
  3. Assembly Primer For Hackers (Part 3) Gdb Usage Primer - отлаживаем простую C программу в отладчике gdb, дизассемблируем её, изучаем содержимое памяти, стэк и регистры.
  4. Assembly Primer For Hackers (Part 4) Hello World - разбираем структуру Assembler программы, смотрим коды системных вызовов и пишем классику "Hello world".

пятница, 8 января 2016 г.

Язык программирования Perl

Особенности работы с файловыми дескрипторами в Perl

#!/usr/bin/perl 

use strict;
use warnings;

use Benchmark qw(:all);
use FileHandle;

cmpthese(100000, {
    fh_1 => sub {
        open my $fh1, "<", "a.txt" or die $!;
        my @whole_file = <$fh1>;
    },
    fh_2 => sub {
        open my $fh2, "<", "a.txt" or die $!;
        my @whole_file = $fh2->getlines;
    },
    fh_3 => sub {
        my $fh3 = FileHandle->new;
        $fh3->open("< a.txt") or die $!;
        my @whole_file = $fh3->getlines;
    }
});

__END__
        Rate fh_3 fh_2 fh_1
fh_3 29155/s   -- -36% -43%
fh_2 45872/s  57%   -- -11%
fh_1 51282/s  76%  12%   --


Во-первых, для того чтобы использовать объектные методы для файлового дескриптора (варианты fh_2, fh_3), необязательно прибегать к помощи модуля FileHandle, в чьей компетенции находится предоставление подобного функционала. Можно обойтись и без него, если прочитать пару строк из документации perlobj:

четверг, 7 января 2016 г.

Навыки

Пополняющийся список навыков, технологий и прочего необходимого для программистов.

Общее

  1. Английский язык.
  2. Русский язык.
  3. Навык десятипальцевой печати.


Математика

  1. Математическая логика.
  2. Комбинаторика.
  3. Теория вероятностей.
  4. Криптография.
  5. Теория игр.

Теория ИТ

  1. Алгоритмы и структуры данных.
  2. Шаблоны проектирования.
    1. Одиночка
  3. Архитектура системы.

Тестирование

  1. Тестирование элементов (Unit testing)

Технологии

  1. Язык программирования Assembler
  2. Язык программирования C.
  3. Язык программирования Perl
  4. Язык программирования Clisp.
  5. Язык программирования JavaScript.
  6. Язык написания скриптов Shell.
  7. Язык разметки HTML.
  8. Каскадные таблицы стилей CSS.
  9. SQL (Postgres, SQLite).

 

Физический уровень

  1. Архитектура компьютера.
  2. Сетевые технологии.

Инструменты

  1. Система контроля версий (git)
  2. Редактор (vim)

Проектирование

  1. Требования к идеальному сайту

Администрирование

Безопасность


Обучение

  1. stackoverflow.com и его русская версия ru.stackoverflow.com
  2. slideshare.net - лекции обо всём на свете на разных языках.

Юриспруденция

  1. Трудовой кодекс.
  2. Уголовный кодекс

Трудоустройство 

  1. Список вакансий на moikrug.ru
  2. Список резюме на moikrug.ru
  3. Вакансии на stackoverflow.com

Экономика и финансы 

Управление временем

Здоровье и спорт