Заметки о тестировании, программировании и прочий "поток сознания", который жалко писать "в стол"
суббота, 28 февраля 2015 г.
четверг, 26 февраля 2015 г.
Шаблонные контейнеры. Оглавление
1. Реализация подсчёта ссылок
2. Собственная реализация IUnknown и подсчёт ссылок. И примеси
3. Generic'и без Generic'ов....
4. Инкапсуляция работы с памятью. Часть 0
5. Инкапсуляция работы с памятью. Часть 1
6. Абстрактные контейнеры
7. Абстрактные контейнеры. Часть 2
8. Выводим конкретные атомарные контейнеры из абстрактных
9. Конкретные контейнеры. Часть 2
10. О шаблонах и примесях
11. Немного об использовании DUnit
12. Шаблоны и тесты DUnit
2. Собственная реализация IUnknown и подсчёт ссылок. И примеси
3. Generic'и без Generic'ов....
4. Инкапсуляция работы с памятью. Часть 0
5. Инкапсуляция работы с памятью. Часть 1
6. Абстрактные контейнеры
7. Абстрактные контейнеры. Часть 2
8. Выводим конкретные атомарные контейнеры из абстрактных
9. Конкретные контейнеры. Часть 2
10. О шаблонах и примесях
11. Немного об использовании DUnit
12. Шаблоны и тесты DUnit
среда, 25 февраля 2015 г.
Просто. Ссылка. Гибкая методология разработки
https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%B1%D0%BA%D0%B0%D1%8F_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8
"Примечательно, чтоAgile Manifesto не содержит практических советов."
:-)
https://plus.google.com/u/0/113567376800896602748/posts/8pG2gJNkG7F
"Один из повторяющихся пунктов критики: при agile-подходе часто пренебрегают созданием плана («дорожной карты») развития продукта, равно как и управлением требованиями, в процессе которого и формируется такая «карта». Гибкий подход к управлению требованиями не подразумевает далеко идущих планов (по сути, управления требованиями просто не существует в данной методологии), а подразумевает возможность заказчика вдруг и неожиданно в конце каждой итерации выставлять новые требования, часто противоречащие архитектуре уже созданного и поставляемого продукта. Такое иногда приводит к катастрофическим «авралам» с массовым рефакторингом и переделками практически на каждой очередной итерации.
Кроме того, считается, что работа в agile мотивирует разработчиков решать все поступившие задачи простейшим и быстрейшим возможным способом, при этом зачастую не обращая внимания на правильность кода с точки зрения требований нижележащей платформы (подход — «работает, и ладно», при этом не учитывается, что может перестать работать при малейшем изменении или же дать тяжёлые к воспроизводству дефекты после реального развёртывания у клиента). Это приводит к снижению качества продукта и накоплению дефектов."
"Примечательно, чтоAgile Manifesto не содержит практических советов."
:-)
https://plus.google.com/u/0/113567376800896602748/posts/8pG2gJNkG7F
"Один из повторяющихся пунктов критики: при agile-подходе часто пренебрегают созданием плана («дорожной карты») развития продукта, равно как и управлением требованиями, в процессе которого и формируется такая «карта». Гибкий подход к управлению требованиями не подразумевает далеко идущих планов (по сути, управления требованиями просто не существует в данной методологии), а подразумевает возможность заказчика вдруг и неожиданно в конце каждой итерации выставлять новые требования, часто противоречащие архитектуре уже созданного и поставляемого продукта. Такое иногда приводит к катастрофическим «авралам» с массовым рефакторингом и переделками практически на каждой очередной итерации.
Кроме того, считается, что работа в agile мотивирует разработчиков решать все поступившие задачи простейшим и быстрейшим возможным способом, при этом зачастую не обращая внимания на правильность кода с точки зрения требований нижележащей платформы (подход — «работает, и ладно», при этом не учитывается, что может перестать работать при малейшем изменении или же дать тяжёлые к воспроизводству дефекты после реального развёртывания у клиента). Это приводит к снижению качества продукта и накоплению дефектов."
понедельник, 23 февраля 2015 г.
суббота, 21 февраля 2015 г.
пятница, 20 февраля 2015 г.
четверг, 19 февраля 2015 г.
Черновик. Вариации на тему TDD
https://bitbucket.org/ingword/mindstream/src/8991728832609ee5d7003fde81e04c74d16e8825/Drafts/LineCross.txt?at=B158_lulin
Задача:
Сделать чтобы объект на который указывает Connector, "привязался" не к центру фигуры, а к границе
https://bitbucket.org/ingword/mindstream/issue/158/connector
Список литературы:
Скалярное произведение
https://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%B0%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5
Векторное произведение
https://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5
Координаты точки пересечения двух прямых - примеры нахождения.
http://www.cleverstudents.ru/line_and_plane/intersection_point_of_straight_lines.html
Коллинеарность векторов, условия коллинеарности векторов.
http://ru.onlinemschool.com/math/library/vector/colinearity/
Структуры геометрических данных, основные операции
http://algolist.manual.ru/maths/geom/datastruct.php
int Edge::cross(Edge &e, double &t)
Пересечение: Прямая(отрезок) и прямая (отрезок)
http://algolist.manual.ru/maths/geom/intersect/lineline2d.php
Будем действовать в духе:
Пишем простой интерпретатор на C++ с помощью TDD
http://programmingmindstream.blogspot.ru/2014/08/c-tdd.html
Алгоритмы от Мишы Костицына:
Ищем точку пересечения прямых:
procedure FindCross(X1, Y1, X2, Y2, Xa, Ya, Xb, Yb: Extended; var aX, aY: Extended);
begin
aY := ((X2 - X1) * (Yb - Ya) * Y1 - (Xb - Xa) * (Y2 - Y1) * Ya + (Xa - X1) * (Y2 - Y1) * (Yb - Ya)) /
((X2 - X1) * (Yb - Ya) - (Xb - Xa) * (Y2 - Y1));
aX := (X2 - X1) * (Y - Y1) / (Y2 - Y1) + X1;
end;
Проверяем, пересекаются ли отрезки:
function LinesCross(X1, Y1, X2, Y2, Xa, Ya, Xb, Yb: Extended; var aX, aY: Extended): Boolean;
function Btwn(Value, One, Two: Extended): Boolean;
begin
Result := (Value >= Min(One, Two)) and (Value <= Max(One, Two));
end;
begin
FindCross(X1, Y1, X2, Y2, Xa, Ya, Xb, Yb, aX, aY);
Result := Btwn(aX, X1, X2) and
Btwn(aX, Xa, Xb) and
Btwn(aY, Y1, Y2) and
Btwn(aY, Ya, Yb);
end;
Осталось перебрать стороны прямоугольника и аккуратно проверить граничные значения, чтобы исключить деление на ноль.
--------
Поправка:
18.02.2015 14:38, Alex W. Lulin пишет:
> procedure FindCross(X1, Y1, X2, Y2, Xa, Ya, Xb, Yb: Extended; var aX, aY: Extended);
> begin
> aY := ((X2 - X1) * (Yb - Ya) * Y1 - (Xb - Xa) * (Y2 - Y1) * Ya + (Xa - X1) * (Y2 - Y1) * (Yb - Ya)) /
> ((X2 - X1) * (Yb - Ya) - (Xb - Xa) * (Y2 - Y1));
> aX := (X2 - X1) * (Y - Y1) / (Y2 - Y1) + X1;
> end;
aX := (X2 - X1) * (Y - Y1) / (Y2 - Y1) + X1;
заменить на
aX := (X2 - X1) * (aY - Y1) / (Y2 - Y1) + X1;
--------
Коммиты:
- пишем вводную, раз уж задача оказалась сложной.
https://bitbucket.org/ingword/mindstream/commits/3be48b26139c972ddf3f7761763a77333de66f50
- добавляем тест TmsLineCrossTest.
https://bitbucket.org/ingword/mindstream/commits/e396a5980bf62e7a8794c2d21db25873d0873c47
- упавшие тесты для недоделанной функциональности - меня лично НЕРВИРУЮТ, поэтому я предпочитаю писать в лог 'failed'. Хотя это конечно "не в духе классического TDD".
https://bitbucket.org/ingword/mindstream/commits/d7c4e0089d840d9d2af67d5b2e489043f537072a
- определяем структуру данных с которой мы будем работать.
https://bitbucket.org/ingword/mindstream/commits/40fcaf126d8dd8e7a627c4cf442c212e4a35bd39
- делаем заготовку вывода линии в лог.
https://bitbucket.org/ingword/mindstream/commits/e1415e763e20de27e080960c62c26c2a3e4b8298
- добавляем вспомогательную структуру данных TmsPointF.
https://bitbucket.org/ingword/mindstream/commits/7491b441ddda404155325f223ec5dda36434c003
- добавляем метод TmsPointF.ToLog.
https://bitbucket.org/ingword/mindstream/commits/ca9963413efac6be5d33a71d248a357b670e6bbc
- сортируем результаты тестов по папкам.
https://bitbucket.org/ingword/mindstream/commits/fd73855a0395fe229eac12e6236e3b6ab66b2ac5
- добавляем метод TmsPointF.N.
https://bitbucket.org/ingword/mindstream/commits/0601a8ccd21b9b8400894f16d2c6237a8c96827f
- параметризуем имя теста.
https://bitbucket.org/ingword/mindstream/commits/7a40847b7f5d1cfeb7bb54c7d3de5fb74ff3136c
- добавляем метод TmsLineF.Cross.
https://bitbucket.org/ingword/mindstream/commits/e783606f38d8e22bd3aa008c828aa6ac9ca79a7a
- используем TmsLineF.Cross.
https://bitbucket.org/ingword/mindstream/commits/66541b8c42dec45ec081def7fc028190d4b3c6f3
- добавляем класс TmsLineCrossTestSuite.
https://bitbucket.org/ingword/mindstream/commits/0fe04024c35118ba39ff7b4996238a6b1610a487
- используем TmsLineCrossTestSuite.
https://bitbucket.org/ingword/mindstream/commits/0c37f6219b555a615d17fd4e7e8ffa739ef015d2
- добавляем структуру TmsLineFPair.
https://bitbucket.org/ingword/mindstream/commits/62de8f85c47b40f30b65e045ff4107a876287b85
- добавляем структуру TmsLineFPairs.
https://bitbucket.org/ingword/mindstream/commits/5c805d11c30568f8fd6c4820c820ae70accf56fc
- используем TmsLineFPairs.
https://bitbucket.org/ingword/mindstream/commits/2e2d8d92ce5340b4423f09cce840281b2a730e57
- добавляем конструкторы классу TmsLineF.
https://bitbucket.org/ingword/mindstream/commits/032c9ef6c0c4fd63e8f22a721ed4d5b39b16db8b
- используем TmsLineFPair.
https://bitbucket.org/ingword/mindstream/commits/743150bf75865f09c512bd740bbb6a52b0ec710d
- расширяем класс TmsLineFPair.
https://bitbucket.org/ingword/mindstream/commits/5f4d3a754da09a7af37e9de4d3ee1524fbf082ba
- параметризуем TmsLineCrossTest.
https://bitbucket.org/ingword/mindstream/commits/e22652caa8da8da452fd766343633f3d08dc1011
- расширяем набор тестов.
https://bitbucket.org/ingword/mindstream/commits/44f632dd83d9033953b6028996974e76a2eb39fd
- добавляем методы TmsLineF.dX, TmsLineF.dY, TmsLineF.Length.
https://bitbucket.org/ingword/mindstream/commits/77f01ae7d9ce223a765b0374baa3d046d5a2171e
- используем метод TmsLineF.Length.
https://bitbucket.org/ingword/mindstream/commits/7345401615c304973a9f06e3c81dc355c3538fe6
- дифференцируем тот случай когда и вторая линия имеет нулевую длину.
https://bitbucket.org/ingword/mindstream/commits/36211d3324863fe5647560c6dad6e39bd32e20be
- отсекаем тот случай, когда вторая линия имеет нулевую длину, а первая - ненулевую.
https://bitbucket.org/ingword/mindstream/commits/3c00c60030a3ba2c8c8fd070f81ef539d62cca41
- добавляем рандомные тесты.
https://bitbucket.org/ingword/mindstream/commits/c27bbda41ca7803a891d71dd5e99c5b3ceef573c
- добавляем ещё один граничный случай.
https://bitbucket.org/ingword/mindstream/commits/56c534339f0c8dcd025d9312e1fa3881bfaef162
- добавляе ещё один вариант перепендикулярности.
https://bitbucket.org/ingword/mindstream/commits/388e8742abc2153a5324ff35aaaee25eace7c2b4
- расширяем тестовый набор.
https://bitbucket.org/ingword/mindstream/commits/49cc737be83b044934e3bb2aa1e98609f088f87c?at=B158_lulin
- вводим понятие скалярного произведения.
https://bitbucket.org/ingword/mindstream/commits/6dfb9db45fa76b46fe56dd1cc5ad3bd446116253?at=B158_lulin
- добавляем функцию определения косинуса угла между векторами.
https://bitbucket.org/ingword/mindstream/commits/c40af8783866017619813986ae96d70022f8d9aa
- проверяем параллельность прямых.
https://bitbucket.org/ingword/mindstream/commits/71d6f36b91a8dbdf9f799a3bacbb0d61c195757f
- добавляем тесты параллельности.
https://bitbucket.org/ingword/mindstream/commits/2297de81f97ee774eeda7875c96972407a84a607
- пишем комментарии.
https://bitbucket.org/ingword/mindstream/commits/1e200b5df639744ceed58e15fddb58546cdffe97
- СНАЧАЛА проверяем параллельность прямых.
https://bitbucket.org/ingword/mindstream/commits/350f4a2c7523ea77e536629dc23144089a66bcfb
- Далее тесты прямой параллельной X и диагональной.
https://bitbucket.org/ingword/mindstream/commits/f3c585e68d01261ed96b9df3cfcceac595be0c2c
- Далее тесты прямой параллельной Y и диагональной.
https://bitbucket.org/ingword/mindstream/commits/49790ac333f57308a69f92adc6076e5b27c51938
- выделяем процедуру DoCross.
https://bitbucket.org/ingword/mindstream/commits/1f44125d9cdb313d93acb493589163a106f007c0
- вытаскиваем процедуру DoCross в правильное место.
https://bitbucket.org/ingword/mindstream/commits/6e3f995e9b8df763368f89cdcfcfbd40174b19a4
- упрощам код.
https://bitbucket.org/ingword/mindstream/commits/76680457ac57f6cdd8d22398cc4dbbb0088fefb8
- вставляем проверку на граничный случай.
https://bitbucket.org/ingword/mindstream/commits/391d31676bfb5a641b0c7124651f703454eaee8f
- при граничном случай меняем линии местами.
https://bitbucket.org/ingword/mindstream/commits/a2a8afa66752665eea22a56d67d262b94d7c2370
- добавляем ещё тест на тот же граничный случай.
https://bitbucket.org/ingword/mindstream/commits/170a47e4a0808193191f02d557d4c64262bcc00b
- добавляем ещё тест прямой параллельной Y и диагональной.
https://bitbucket.org/ingword/mindstream/commits/2dcdcb8a61c793ec1d8fdcb9b57f35ebc0ce5fb0
- возвращаем результат, про который забыли.
https://bitbucket.org/ingword/mindstream/commits/45a3e7f6fea771098d05f9fe426e30996562855b
- упрощаем код.
https://bitbucket.org/ingword/mindstream/commits/5310dad62e65480851cd6dda9adb41dd538f95d7
- упрощаем код.
https://bitbucket.org/ingword/mindstream/commits/e25b3e0ca989a97e2a26cd1bd69d175e12501c38
- упрощаем код.
https://bitbucket.org/ingword/mindstream/commits/cf8155d5664d1150e73762a8ff27e59a526e9286
- выделяем заготовочку для обобщения.
https://bitbucket.org/ingword/mindstream/commits/9f40ab6e5c902407cb4663d582ffe1b80e588ad6
Задача:
Сделать чтобы объект на который указывает Connector, "привязался" не к центру фигуры, а к границе
https://bitbucket.org/ingword/mindstream/issue/158/connector
Список литературы:
Скалярное произведение
https://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%B0%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5
Векторное произведение
https://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%BA%D1%82%D0%BE%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5
Координаты точки пересечения двух прямых - примеры нахождения.
http://www.cleverstudents.ru/line_and_plane/intersection_point_of_straight_lines.html
Коллинеарность векторов, условия коллинеарности векторов.
http://ru.onlinemschool.com/math/library/vector/colinearity/
Структуры геометрических данных, основные операции
http://algolist.manual.ru/maths/geom/datastruct.php
int Edge::cross(Edge &e, double &t)
Пересечение: Прямая(отрезок) и прямая (отрезок)
http://algolist.manual.ru/maths/geom/intersect/lineline2d.php
Будем действовать в духе:
Пишем простой интерпретатор на C++ с помощью TDD
http://programmingmindstream.blogspot.ru/2014/08/c-tdd.html
Алгоритмы от Мишы Костицына:
Ищем точку пересечения прямых:
procedure FindCross(X1, Y1, X2, Y2, Xa, Ya, Xb, Yb: Extended; var aX, aY: Extended);
begin
aY := ((X2 - X1) * (Yb - Ya) * Y1 - (Xb - Xa) * (Y2 - Y1) * Ya + (Xa - X1) * (Y2 - Y1) * (Yb - Ya)) /
((X2 - X1) * (Yb - Ya) - (Xb - Xa) * (Y2 - Y1));
aX := (X2 - X1) * (Y - Y1) / (Y2 - Y1) + X1;
end;
Проверяем, пересекаются ли отрезки:
function LinesCross(X1, Y1, X2, Y2, Xa, Ya, Xb, Yb: Extended; var aX, aY: Extended): Boolean;
function Btwn(Value, One, Two: Extended): Boolean;
begin
Result := (Value >= Min(One, Two)) and (Value <= Max(One, Two));
end;
begin
FindCross(X1, Y1, X2, Y2, Xa, Ya, Xb, Yb, aX, aY);
Result := Btwn(aX, X1, X2) and
Btwn(aX, Xa, Xb) and
Btwn(aY, Y1, Y2) and
Btwn(aY, Ya, Yb);
end;
Осталось перебрать стороны прямоугольника и аккуратно проверить граничные значения, чтобы исключить деление на ноль.
--------
Поправка:
18.02.2015 14:38, Alex W. Lulin пишет:
> procedure FindCross(X1, Y1, X2, Y2, Xa, Ya, Xb, Yb: Extended; var aX, aY: Extended);
> begin
> aY := ((X2 - X1) * (Yb - Ya) * Y1 - (Xb - Xa) * (Y2 - Y1) * Ya + (Xa - X1) * (Y2 - Y1) * (Yb - Ya)) /
> ((X2 - X1) * (Yb - Ya) - (Xb - Xa) * (Y2 - Y1));
> aX := (X2 - X1) * (Y - Y1) / (Y2 - Y1) + X1;
> end;
aX := (X2 - X1) * (Y - Y1) / (Y2 - Y1) + X1;
заменить на
aX := (X2 - X1) * (aY - Y1) / (Y2 - Y1) + X1;
--------
Коммиты:
- пишем вводную, раз уж задача оказалась сложной.
https://bitbucket.org/ingword/mindstream/commits/3be48b26139c972ddf3f7761763a77333de66f50
- добавляем тест TmsLineCrossTest.
https://bitbucket.org/ingword/mindstream/commits/e396a5980bf62e7a8794c2d21db25873d0873c47
- упавшие тесты для недоделанной функциональности - меня лично НЕРВИРУЮТ, поэтому я предпочитаю писать в лог 'failed'. Хотя это конечно "не в духе классического TDD".
https://bitbucket.org/ingword/mindstream/commits/d7c4e0089d840d9d2af67d5b2e489043f537072a
- определяем структуру данных с которой мы будем работать.
https://bitbucket.org/ingword/mindstream/commits/40fcaf126d8dd8e7a627c4cf442c212e4a35bd39
- делаем заготовку вывода линии в лог.
https://bitbucket.org/ingword/mindstream/commits/e1415e763e20de27e080960c62c26c2a3e4b8298
- добавляем вспомогательную структуру данных TmsPointF.
https://bitbucket.org/ingword/mindstream/commits/7491b441ddda404155325f223ec5dda36434c003
- добавляем метод TmsPointF.ToLog.
https://bitbucket.org/ingword/mindstream/commits/ca9963413efac6be5d33a71d248a357b670e6bbc
- сортируем результаты тестов по папкам.
https://bitbucket.org/ingword/mindstream/commits/fd73855a0395fe229eac12e6236e3b6ab66b2ac5
- добавляем метод TmsPointF.N.
https://bitbucket.org/ingword/mindstream/commits/0601a8ccd21b9b8400894f16d2c6237a8c96827f
- параметризуем имя теста.
https://bitbucket.org/ingword/mindstream/commits/7a40847b7f5d1cfeb7bb54c7d3de5fb74ff3136c
- добавляем метод TmsLineF.Cross.
https://bitbucket.org/ingword/mindstream/commits/e783606f38d8e22bd3aa008c828aa6ac9ca79a7a
- используем TmsLineF.Cross.
https://bitbucket.org/ingword/mindstream/commits/66541b8c42dec45ec081def7fc028190d4b3c6f3
- добавляем класс TmsLineCrossTestSuite.
https://bitbucket.org/ingword/mindstream/commits/0fe04024c35118ba39ff7b4996238a6b1610a487
- используем TmsLineCrossTestSuite.
https://bitbucket.org/ingword/mindstream/commits/0c37f6219b555a615d17fd4e7e8ffa739ef015d2
- добавляем структуру TmsLineFPair.
https://bitbucket.org/ingword/mindstream/commits/62de8f85c47b40f30b65e045ff4107a876287b85
- добавляем структуру TmsLineFPairs.
https://bitbucket.org/ingword/mindstream/commits/5c805d11c30568f8fd6c4820c820ae70accf56fc
- используем TmsLineFPairs.
https://bitbucket.org/ingword/mindstream/commits/2e2d8d92ce5340b4423f09cce840281b2a730e57
- добавляем конструкторы классу TmsLineF.
https://bitbucket.org/ingword/mindstream/commits/032c9ef6c0c4fd63e8f22a721ed4d5b39b16db8b
- используем TmsLineFPair.
https://bitbucket.org/ingword/mindstream/commits/743150bf75865f09c512bd740bbb6a52b0ec710d
- расширяем класс TmsLineFPair.
https://bitbucket.org/ingword/mindstream/commits/5f4d3a754da09a7af37e9de4d3ee1524fbf082ba
- параметризуем TmsLineCrossTest.
https://bitbucket.org/ingword/mindstream/commits/e22652caa8da8da452fd766343633f3d08dc1011
- расширяем набор тестов.
https://bitbucket.org/ingword/mindstream/commits/44f632dd83d9033953b6028996974e76a2eb39fd
- добавляем методы TmsLineF.dX, TmsLineF.dY, TmsLineF.Length.
https://bitbucket.org/ingword/mindstream/commits/77f01ae7d9ce223a765b0374baa3d046d5a2171e
- используем метод TmsLineF.Length.
https://bitbucket.org/ingword/mindstream/commits/7345401615c304973a9f06e3c81dc355c3538fe6
- дифференцируем тот случай когда и вторая линия имеет нулевую длину.
https://bitbucket.org/ingword/mindstream/commits/36211d3324863fe5647560c6dad6e39bd32e20be
- отсекаем тот случай, когда вторая линия имеет нулевую длину, а первая - ненулевую.
https://bitbucket.org/ingword/mindstream/commits/3c00c60030a3ba2c8c8fd070f81ef539d62cca41
- добавляем рандомные тесты.
https://bitbucket.org/ingword/mindstream/commits/c27bbda41ca7803a891d71dd5e99c5b3ceef573c
- добавляем ещё один граничный случай.
https://bitbucket.org/ingword/mindstream/commits/56c534339f0c8dcd025d9312e1fa3881bfaef162
- добавляе ещё один вариант перепендикулярности.
https://bitbucket.org/ingword/mindstream/commits/388e8742abc2153a5324ff35aaaee25eace7c2b4
- расширяем тестовый набор.
https://bitbucket.org/ingword/mindstream/commits/49cc737be83b044934e3bb2aa1e98609f088f87c?at=B158_lulin
- вводим понятие скалярного произведения.
https://bitbucket.org/ingword/mindstream/commits/6dfb9db45fa76b46fe56dd1cc5ad3bd446116253?at=B158_lulin
- добавляем функцию определения косинуса угла между векторами.
https://bitbucket.org/ingword/mindstream/commits/c40af8783866017619813986ae96d70022f8d9aa
- проверяем параллельность прямых.
https://bitbucket.org/ingword/mindstream/commits/71d6f36b91a8dbdf9f799a3bacbb0d61c195757f
- добавляем тесты параллельности.
https://bitbucket.org/ingword/mindstream/commits/2297de81f97ee774eeda7875c96972407a84a607
- пишем комментарии.
https://bitbucket.org/ingword/mindstream/commits/1e200b5df639744ceed58e15fddb58546cdffe97
- СНАЧАЛА проверяем параллельность прямых.
https://bitbucket.org/ingword/mindstream/commits/350f4a2c7523ea77e536629dc23144089a66bcfb
- Далее тесты прямой параллельной X и диагональной.
https://bitbucket.org/ingword/mindstream/commits/f3c585e68d01261ed96b9df3cfcceac595be0c2c
- Далее тесты прямой параллельной Y и диагональной.
https://bitbucket.org/ingword/mindstream/commits/49790ac333f57308a69f92adc6076e5b27c51938
- выделяем процедуру DoCross.
https://bitbucket.org/ingword/mindstream/commits/1f44125d9cdb313d93acb493589163a106f007c0
- вытаскиваем процедуру DoCross в правильное место.
https://bitbucket.org/ingword/mindstream/commits/6e3f995e9b8df763368f89cdcfcfbd40174b19a4
- упрощам код.
https://bitbucket.org/ingword/mindstream/commits/76680457ac57f6cdd8d22398cc4dbbb0088fefb8
- вставляем проверку на граничный случай.
https://bitbucket.org/ingword/mindstream/commits/391d31676bfb5a641b0c7124651f703454eaee8f
- при граничном случай меняем линии местами.
https://bitbucket.org/ingword/mindstream/commits/a2a8afa66752665eea22a56d67d262b94d7c2370
- добавляем ещё тест на тот же граничный случай.
https://bitbucket.org/ingword/mindstream/commits/170a47e4a0808193191f02d557d4c64262bcc00b
- добавляем ещё тест прямой параллельной Y и диагональной.
https://bitbucket.org/ingword/mindstream/commits/2dcdcb8a61c793ec1d8fdcb9b57f35ebc0ce5fb0
- возвращаем результат, про который забыли.
https://bitbucket.org/ingword/mindstream/commits/45a3e7f6fea771098d05f9fe426e30996562855b
- упрощаем код.
https://bitbucket.org/ingword/mindstream/commits/5310dad62e65480851cd6dda9adb41dd538f95d7
- упрощаем код.
https://bitbucket.org/ingword/mindstream/commits/e25b3e0ca989a97e2a26cd1bd69d175e12501c38
- упрощаем код.
https://bitbucket.org/ingword/mindstream/commits/cf8155d5664d1150e73762a8ff27e59a526e9286
- выделяем заготовочку для обобщения.
https://bitbucket.org/ingword/mindstream/commits/9f40ab6e5c902407cb4663d582ffe1b80e588ad6
суббота, 14 февраля 2015 г.
Паттерн - контекст, и в целом
Паттерны - очередное англоязычное слово.
В среде программистов наиболее часто используемое.
Я только сегодня, наконец-то понял формулировку смысла этого слова по английски. Хотя был бы очень признателен, за критику, если я вдруг ошибаюсь.
Паттерн - это просто какая-то абстрактная фишка(технология, знание, умение), что угодно что позволяет вам делать вашу “работу” - эффективней. Паттерн - контекст, не зря выбран для названия заметки.
Прятать детали внутрь “записи”(record в Pascal) для меня знакомая “фишка” лет 15. Я не всегда её применяю, но знаком я с ней лет 15.
Я не когда не считал, владение умением, прятать детали внутрь записи, каким-то супер прогрессом. Однако, точно помню что после одной из статей, я стал это применять намного чаще.
В общем. Подытожу.
В программировании, нас не интересуют общения с клиентами, нас интересует - “хорошо пахнущий код”.
Немного комита из жизни контекста:
https://bitbucket.org/ingword/mindstream/commits/ea270b1fea0c76821db3119ed447ddfa1226b64f
constructor TmsConnector.CreateInner(const aCtx: TmsMakeShapeContext); begin inherited; + if (aCtx.rShapesController <> nil) then + f_LeftShape := aCtx.rShapesController.ShapeByPt(aCtx.rStartPoint); end;
пятница, 13 февраля 2015 г.
четверг, 12 февраля 2015 г.
MindStream. Затравочка. Паттерны проектирования использованные при разработке нашего приложения
Собственно про сам проект:
http://programmingmindstream.blogspot.ru/2014/11/mindstream.html
https://bitbucket.org/ingword/mindstream/overview
Теперь - "вводная":
Пришла мне тут в голову мысль - почему бы не привести "каталог примеров паттернов" которые уже были использованы при разработке нашего приложения.
Примеры от GoF или "синтетические примеры" это конечно хорошо, но "реальные" примеры - по-моему - лучше.
Тем более, что они - есть у нас.
Посему - я начинаю новый цикл статей - "Паттерны проектирования использованные при разработке нашего приложения".
Он не претендует на академичность, а призван показать - "как я это вижу".
Итак.
Паттерны будем брать отсюда:
Шаблон проектирования
Software design pattern
Мы будем брать оттуда по одному паттерну и будем находить примеры их использования в нашем приложении.
Посмотрим - сколько паттернов удастся описать.
Пока я нашёл вот что:
Паттерны проектирования использованные при разработке нашего приложения:
0. Введение в архитектуру приложения. Тут мы введём понятия и определения и основные концепции (http://habrahabr.ru/post/232955/).
1. Proxy (?).
2. Publisher/Subscriber (https://bitbucket.org/ingword/mindstream/commits/5d11d8d3b3047a8200e02ca2d562679f425b5afd).
3. Фабрика (https://bitbucket.org/ingword/mindstream/commits/5b23f798f23fe400f66e157c2182e4624fc51e98?at=B57).
4. Декоратор (https://bitbucket.org/ingword/mindstream/commits/e07225dd7a50df2dc4a078717bdea398b0d75a0d).
5. Синглетон (https://bitbucket.org/ingword/mindstream/commits/834de9280c082dd7803d9812854eb2daea96079b).
6. Inversion of control (Service Locator?) (https://bitbucket.org/ingword/mindstream/commits/991e1393409e661f7b01d90bd233c107fbe76c3e?at=B57).
7. Builder (?).
8. Command (?).
9. Iterator (?) (https://bitbucket.org/ingword/mindstream/commits/27eb90646d7c6896442d68b703efbc63c81a1fdb).
10. Immutable interface.
11. Lazy initialization.
12. Null object.
13. State (Контекст) (https://bitbucket.org/ingword/mindstream/commits/1a20a3b6d9108c1c96393598d9a1f77628de90de?at=B57) (http://programmingmindstream.blogspot.ru/2015/02/blog-post_41.html) (http://programmingmindstream.blogspot.ru/2015/02/blog-post_42.html).
14. Composite (Компоновщик) (https://bitbucket.org/ingword/mindstream/commits/13781dd096dccb5ee7befba462a789f748b61fbf).
15. MVC. У нас ВСЁ приложение это - MVC. Ну или "по мотивам" MVC. (https://ru.wikipedia.org/wiki/Model-View-Controller).
16. Strategy (Стратегия).
В этом списке есть ссылки на коммиты - классы, которые являются претендентами на описание того или иного шаблона проектирования.
Список - не полный. Он будет пополняться. По мере работы над статьями.
Сразу хочу предупредить тех, кто захочет сказать - "у вас слишком много паттернов, вы увлекаетесь чрезмерно" - мы специально делаем приложение "богатым" на паттерны. Поскольку оно специально создаётся, как "поле для примеров".
Те паттерны у которых стоят знак вопроса (?) - мне кажется реализованы в "отходе от классики". Посему просьба - относиться снисходительно и "не бить ногами".
Если в результате этой деятельности получится что-то стоящее, то я планирую переместить информацию сюда - https://bitbucket.org/ingword/mindstream/wiki/Home (https://bitbucket.org/ingword/mindstream/wiki/%D0%9F%D0%B0%D1%82%D1%82%D0%B5%D1%80%D0%BD%D1%8B%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%B8%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5%20%D0%BD%D0%B0%D1%88%D0%B5%D0%B3%D0%BE%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F)
В виде уже wiki-справочника.
И создать там описание архитектуры приложения и проектную документацию. В том виде в котором по-моему мнению она должна быть.
Первый паттерн, который я хочу описать это - Декоратор.
"Следите за обновлениями".
http://programmingmindstream.blogspot.ru/2014/11/mindstream.html
https://bitbucket.org/ingword/mindstream/overview
Теперь - "вводная":
Пришла мне тут в голову мысль - почему бы не привести "каталог примеров паттернов" которые уже были использованы при разработке нашего приложения.
Примеры от GoF или "синтетические примеры" это конечно хорошо, но "реальные" примеры - по-моему - лучше.
Тем более, что они - есть у нас.
Посему - я начинаю новый цикл статей - "Паттерны проектирования использованные при разработке нашего приложения".
Он не претендует на академичность, а призван показать - "как я это вижу".
Итак.
Паттерны будем брать отсюда:
Шаблон проектирования
Software design pattern
Мы будем брать оттуда по одному паттерну и будем находить примеры их использования в нашем приложении.
Посмотрим - сколько паттернов удастся описать.
Пока я нашёл вот что:
Паттерны проектирования использованные при разработке нашего приложения:
0. Введение в архитектуру приложения. Тут мы введём понятия и определения и основные концепции (http://habrahabr.ru/post/232955/).
1. Proxy (?).
2. Publisher/Subscriber (https://bitbucket.org/ingword/mindstream/commits/5d11d8d3b3047a8200e02ca2d562679f425b5afd).
3. Фабрика (https://bitbucket.org/ingword/mindstream/commits/5b23f798f23fe400f66e157c2182e4624fc51e98?at=B57).
4. Декоратор (https://bitbucket.org/ingword/mindstream/commits/e07225dd7a50df2dc4a078717bdea398b0d75a0d).
5. Синглетон (https://bitbucket.org/ingword/mindstream/commits/834de9280c082dd7803d9812854eb2daea96079b).
6. Inversion of control (Service Locator?) (https://bitbucket.org/ingword/mindstream/commits/991e1393409e661f7b01d90bd233c107fbe76c3e?at=B57).
7. Builder (?).
8. Command (?).
9. Iterator (?) (https://bitbucket.org/ingword/mindstream/commits/27eb90646d7c6896442d68b703efbc63c81a1fdb).
10. Immutable interface.
11. Lazy initialization.
12. Null object.
13. State (Контекст) (https://bitbucket.org/ingword/mindstream/commits/1a20a3b6d9108c1c96393598d9a1f77628de90de?at=B57) (http://programmingmindstream.blogspot.ru/2015/02/blog-post_41.html) (http://programmingmindstream.blogspot.ru/2015/02/blog-post_42.html).
14. Composite (Компоновщик) (https://bitbucket.org/ingword/mindstream/commits/13781dd096dccb5ee7befba462a789f748b61fbf).
15. MVC. У нас ВСЁ приложение это - MVC. Ну или "по мотивам" MVC. (https://ru.wikipedia.org/wiki/Model-View-Controller).
16. Strategy (Стратегия).
В этом списке есть ссылки на коммиты - классы, которые являются претендентами на описание того или иного шаблона проектирования.
Список - не полный. Он будет пополняться. По мере работы над статьями.
Сразу хочу предупредить тех, кто захочет сказать - "у вас слишком много паттернов, вы увлекаетесь чрезмерно" - мы специально делаем приложение "богатым" на паттерны. Поскольку оно специально создаётся, как "поле для примеров".
Те паттерны у которых стоят знак вопроса (?) - мне кажется реализованы в "отходе от классики". Посему просьба - относиться снисходительно и "не бить ногами".
Если в результате этой деятельности получится что-то стоящее, то я планирую переместить информацию сюда - https://bitbucket.org/ingword/mindstream/wiki/Home (https://bitbucket.org/ingword/mindstream/wiki/%D0%9F%D0%B0%D1%82%D1%82%D0%B5%D1%80%D0%BD%D1%8B%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%B8%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5%20%D0%BD%D0%B0%D1%88%D0%B5%D0%B3%D0%BE%20%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F)
В виде уже wiki-справочника.
И создать там описание архитектуры приложения и проектную документацию. В том виде в котором по-моему мнению она должна быть.
Первый паттерн, который я хочу описать это - Декоратор.
"Следите за обновлениями".
Коротко. Коммиты. Параллельный перенос линии. Размышления
Пока только коммиты:
https://bitbucket.org/ingword/mindstream/commits/a216fb52dd6d9fc7d5d2cec8e3ab66e27de1a3b0
https://bitbucket.org/ingword/mindstream/commits/e9c7ea1e5103e09117b3642be010c6e8cd694e2e
https://bitbucket.org/ingword/mindstream/commits/1514c4ef88690088badc7fea2607c2a079d47be3
https://bitbucket.org/ingword/mindstream/commits/2f3b388da5f30bec49dbafccaf914702749cbff8
https://bitbucket.org/ingword/mindstream/commits/4993c789a68f436c5fd425802a3f6468328cd607
https://bitbucket.org/ingword/mindstream/commits/f823b519ceed0af5887fdc6ae1e1ad207eb0ae45
https://bitbucket.org/ingword/mindstream/commits/ecb4ad46986c770762f8d4b0d35a96a7412393e3
https://bitbucket.org/ingword/mindstream/commits/4e39e35a45e2973b33fdaad076e7ea9e8e9c9e82
https://bitbucket.org/ingword/mindstream/commits/8637c0e47e07563dc1c14969be778ebc7ff0e4fd
https://bitbucket.org/ingword/mindstream/commits/e3c29fcc74ad0efcc6cd492ff4d80eddba6acde3
https://bitbucket.org/ingword/mindstream/commits/0d77051f80a69c238f8644d28ba9cf1dd15f7447
https://bitbucket.org/ingword/mindstream/commits/be598d8141e65c1c3a66664cab7293bb4dbd8b35
https://bitbucket.org/ingword/mindstream/commits/8b4d77403c1ad7be2250fbd22429d9e367962f56
https://bitbucket.org/ingword/mindstream/commits/b9cf895f4761166ffe596de3c054bfdcb4232983
https://bitbucket.org/ingword/mindstream/commits/1d3dafc35225aad6996f82b5e7f8f693f61b96ac
Потом - может быть что-то напишется.
Пока - от параллельного переноса я решил отказаться. Ибо пока не очень понимаю - зачем он нам. Пока сделал таскание концов линии.
https://bitbucket.org/ingword/mindstream/commits/a216fb52dd6d9fc7d5d2cec8e3ab66e27de1a3b0
https://bitbucket.org/ingword/mindstream/commits/e9c7ea1e5103e09117b3642be010c6e8cd694e2e
https://bitbucket.org/ingword/mindstream/commits/1514c4ef88690088badc7fea2607c2a079d47be3
https://bitbucket.org/ingword/mindstream/commits/2f3b388da5f30bec49dbafccaf914702749cbff8
https://bitbucket.org/ingword/mindstream/commits/4993c789a68f436c5fd425802a3f6468328cd607
https://bitbucket.org/ingword/mindstream/commits/f823b519ceed0af5887fdc6ae1e1ad207eb0ae45
https://bitbucket.org/ingword/mindstream/commits/ecb4ad46986c770762f8d4b0d35a96a7412393e3
https://bitbucket.org/ingword/mindstream/commits/4e39e35a45e2973b33fdaad076e7ea9e8e9c9e82
https://bitbucket.org/ingword/mindstream/commits/8637c0e47e07563dc1c14969be778ebc7ff0e4fd
https://bitbucket.org/ingword/mindstream/commits/e3c29fcc74ad0efcc6cd492ff4d80eddba6acde3
https://bitbucket.org/ingword/mindstream/commits/0d77051f80a69c238f8644d28ba9cf1dd15f7447
https://bitbucket.org/ingword/mindstream/commits/be598d8141e65c1c3a66664cab7293bb4dbd8b35
https://bitbucket.org/ingword/mindstream/commits/8b4d77403c1ad7be2250fbd22429d9e367962f56
https://bitbucket.org/ingword/mindstream/commits/b9cf895f4761166ffe596de3c054bfdcb4232983
https://bitbucket.org/ingword/mindstream/commits/1d3dafc35225aad6996f82b5e7f8f693f61b96ac
Потом - может быть что-то напишется.
Пока - от параллельного переноса я решил отказаться. Ибо пока не очень понимаю - зачем он нам. Пока сделал таскание концов линии.
среда, 11 февраля 2015 г.
GUI-тестирование по-русски. Оглавление
О тестах и специально оборудованных "контрольных точках"
В думах о тестировании
В думах о тестировании №2
В думах о тестировании №3
В думах о тестировании №4
В думах о тестировании №5
Коротко. О GUI-тестировании "по-русски"
О GUI-тестировании "по-русски". Развиваем тему
GUI-тестирование "по-русски". Ввод "алфавитно-цифровых" символов в текущий контрол
GUI-тестирование "по-русски". Ремарка о том, "как это всё устроено"
GUI-тестирование "по-русски". Как всё это устроено №2
GUI-тестирование "по русски". Back to the basics
GUI-тестирование "по-русски". Back to the basics. Пример нажатия на кнопку формы из скрипта
GUI-тестирование "по-русски". Прикручиваем DUnit к нашим "скриптам"
В думах о тестировании
В думах о тестировании №2
В думах о тестировании №3
В думах о тестировании №4
В думах о тестировании №5
Коротко. О GUI-тестировании "по-русски"
О GUI-тестировании "по-русски". Развиваем тему
GUI-тестирование "по-русски". Ввод "алфавитно-цифровых" символов в текущий контрол
GUI-тестирование "по-русски". Ремарка о том, "как это всё устроено"
GUI-тестирование "по-русски". Как всё это устроено №2
GUI-тестирование "по русски". Back to the basics
GUI-тестирование "по-русски". Back to the basics. Пример нажатия на кнопку формы из скрипта
GUI-тестирование "по-русски". Прикручиваем DUnit к нашим "скриптам"
Коммит. Контексты на то и нужны, чтобы не плодить дополнительных параметров
Контексты на то и нужны, чтобы не плодить дополнительных параметров:
https://bitbucket.org/ingword/mindstream/commits/ed9b86c35554adf18c3047006ff4f644c05d639a
https://bitbucket.org/ingword/mindstream/commits/ed9b86c35554adf18c3047006ff4f644c05d639a
вторник, 10 февраля 2015 г.
Коротко. Ссылка. "Проблемы" у людей
https://plus.google.com/u/0/+MagnoLima/posts/Wze5DCKQHMg
Мда... В чём проблема то? Стиль назначить. Я чего-то не понимаю?
Прям хоть "статью пиши"...
Мда... В чём проблема то? Стиль назначить. Я чего-то не понимаю?
Прям хоть "статью пиши"...
Коротко. "Колбасу" превращаем в цикл
https://bitbucket.org/ingword/mindstream/commits/1a585e776e5cc0abf999e5b03ecac64799541d4a
Главное, что ТЕСТЫ все сошлись. Чисто формально.
Ну и дальше:
https://bitbucket.org/ingword/mindstream/commits/87246cddf818004e0ad6f93dbb6abd902b7ed01b
https://bitbucket.org/ingword/mindstream/commits/0345868bd364b4b530e86bb32727353f3681e9ba
https://bitbucket.org/ingword/mindstream/commits/29456b6cccecf379164fe6c5472416fdd2f3a9f6
https://bitbucket.org/ingword/mindstream/commits/7057b3381472e4993a25dfe1c8fdd3c476e1c65d
https://bitbucket.org/ingword/mindstream/commits/3de060bf03810cdf2e7cf117041c2cc5435692aa
https://bitbucket.org/ingword/mindstream/commits/fbefce67a319e84594ba2f1b0cb1793f0902509b
https://bitbucket.org/ingword/mindstream/commits/4edda099f3c69ee706ab5bc5df6298a8f981599b
Главное, что ТЕСТЫ все сошлись. Чисто формально.
Ну и дальше:
https://bitbucket.org/ingword/mindstream/commits/87246cddf818004e0ad6f93dbb6abd902b7ed01b
https://bitbucket.org/ingword/mindstream/commits/0345868bd364b4b530e86bb32727353f3681e9ba
https://bitbucket.org/ingword/mindstream/commits/29456b6cccecf379164fe6c5472416fdd2f3a9f6
https://bitbucket.org/ingword/mindstream/commits/7057b3381472e4993a25dfe1c8fdd3c476e1c65d
https://bitbucket.org/ingword/mindstream/commits/3de060bf03810cdf2e7cf117041c2cc5435692aa
https://bitbucket.org/ingword/mindstream/commits/fbefce67a319e84594ba2f1b0cb1793f0902509b
https://bitbucket.org/ingword/mindstream/commits/4edda099f3c69ee706ab5bc5df6298a8f981599b
Offtopic. Цитата из думающего человека
Не хочу "разжигать", но (!) мне показалось, что он во многом прав.
Надеюсь, что он не обидится на цитирование.
https://plus.google.com/u/0/100903871335644471614/posts/U6rqzcGfoQm
"Забавно... "Они" не знают, что делать с RT...
Мы вот знаем, что делать с "Эхом" и "Дождём" - периодически заглядывать, фильтровать пропаганду и узнавать о вещах, которые "федеральные СМИ не находят существенными". А они - не знают... Пичалька (c) :-)
Особенно умилило вот это:
«Вдобавок к новостям RT также превратился в место, где выражают своё мнение американские диссиденты, включая крайне левых вроде Ноама Хомски, крайне правых вроде Патрика Бьюкенена и либертарианцев-маргиналов вроде Рона Пола. И хотя подобные мнения провокационны и непопулярны, RT позволяет американской аудитории с ними знакомиться.»
-- Ах-ах! Они видите-ли "провокационные" и "непопулярые" вещи излагают... Ну понятно, вещи "пристойные" и "популярные" зритель/слушатель может получить на Fox News, NBC и прочих "федеральных СМИ" :-D Ах ну да, на RT получают голос "маргиналы" - ну у нас тоже Немцов, Касьянов и прочие, примкнувшие к ним шахматисты иначе как маргиналами большинством не воспринимаются. Но почему не дать им слова (Немцов регулярно в федеральный "телеящик" попадает) и зачем ещё раз называть их маргиналами? Да и кто их маоргиналамии сделал? Ну про Немцова и К я знаю - они сами на свой маргинальный имидж пахали не покладая рук в 90-е. А вот г-н Робертс чем не угодил? Говорит не то? Ну извините, не знали, что у вас такая свобода слова... :-)
«В данной ситуации RT ведёт себя как хитрый продавец: сначала заманивает американского зрителя на трезвое отношение к происходящему в США, а потом подсовывает ему бессовестную российскую пропаганду»
-- А это - вообще многого стоит :-) Достаточно включить любой оппозиционный канал - сразу возникает ощущение, что в ГД все идиоты, что промышленности у нас нет, что кроме как качать нефть "русское быдло" ничего не умеет. А все талантливые, умные и красивые (!) люди - они думают что "паравалить". Не в этом ли суть "оппозиционности" - навязать зрителю/слушателю определённое мнение о своей стране? Посеять недовольство, вызвать ненависть к власти?
Господа, Вы просто столкнулись с тем, с чем нам приходится жить уже более 20 лет. Мы уже привыкли, у нас выработался иммунитет. Когда мы слышим что-либо в СМИ мы задаёмся сакраментальным вопросом: "кому это выгодно" (чтобы мы узнали о предмете именно в такой форме и именно в такой интерпретации)? Да не у всех развился этот навык, но рискну предположить, что эти 10%, у которых он выработался - они и есть те умные, кто "валить" не сподобился, и кто хочет сделать жизнь лучше здесь и, возможно, не только для себя.
Так что привыкайте господа. RT оттуда не уйдёт. По своей воле, во всяком случае. А пропаганда... Без неё никакое государство не может существовать - ни "кровавый режим", ни ваши "демократии". Разница только в направленности этой пропаганды. Но у нас, по крайней мере, так не врут :-) Врут, врут конечно, но по-другому.
Например, крайний "Бесогон" "царя нашего" ;-) Там знаменитый "правообладатель" и бенефициар от налога на технику, своим проникновенным голосом представил материал некоего ополченца. - Симпатичный молодой человек, с характерным восточно-украинским говором, с псевдонимом "фотограф" комментировал своё видео, которое "наш царь" окрестил не иначе как "пронзительное" и мегаправдивое. К видео претензий нет никаких, к молодому человеку-ополченцу и даже к "царю" - тоже. Но так уж вышло, что крупную ложь наших СМИ их совместная работа элементарно вскрыла. А именно: почему ВСУ наносят удары из тяжёлого вооружения по жилым кварталам Донецка. - Да просто потому, что из этих жилых кварталов по ним наносят удары ополченцы.
А сколько было болтовни в центральных СМИ, что это "варварство" ничем не мотивировано, что ополченцев в жилых кварталах нет? - Ну как же нет? Вот, в материале молодого человека, в хорошем качестве видим, что есть. Более того, он прямо говорит, почему ВСУ превратили "девятиэтажку" в "нежилой дом" с ужасными разрушениями. - Потому, что они базировались за этой девятиэтажной, потому, что их позиции располагались на её крыше и не только там.
Осуждаю ли я наши СМИ? - Да нет, кто я такой. Но враньё - фиксирую. Не могу я без этого.
Но у нас не обвиняют голословно в чём угодно кого угодно. Если говорят, что ВСУ использует иностранное оружие - то предъявляют его. Если говорят об иностранных наёмниках - предъявляют соответствующие видеоматериалы, если говорят о жертвах среди мирного населения - то показывают их.
Или вот, отсюдаhttp://www.svoboda.org/content/article/26836320.html (один из "голосов", которые вполне в трэнде "пристойных СМИ"):
«- В памяти у многих, думаю, просто визуально осталось, как Петр Порошенко продемонстрировал доказательства того, что российские военнослужащие присутствуют на территории Украины и активно участвуют в конфликте, воюя против украинских сил. Он с трибуны продемонстрировал захваченные военные билеты и паспорта российских военнослужащих - это очень запоминается…»
-- Я так и не понял: со слов Поршенко на Донбассе тысячи российских военнослужащих. Неужели никто не попал в плен? Неужели единственным подтверждением своих тезисов г-н Порошенко может предъявить только корочки российских паспортов? Почему нет в прямом эфире "помятых" российских военнослужащих, рассказывающих о том, как "преступное командование российских ВС" ставило перед ними преступные задачи? - Думаю потому, что таких "российских военнослужащих" в распоряжении ВСУ просто нет. Иначе об этом "звонили бы во все колокола", и не на "вшивых" "5-м канале" или "Iнтере", а на "гламурных" Fox News, NBC и прочих "центральных СМИ". - Интересно, что бы тогда сказали на RT... :-)"
Но! Добавлю "от себя" ещё одну цитату:
""Разговор со свидомитом
- а почему вы не отвоюете Крым, а только кричите, что Крым- Украина?
- Так потому, шо там российские войска стоят!
- Так вы ж говорите, что на Донбассе тоже российские войска, воюете же на Донбассе то!
- А-а! Так то, шо, на Донбассе российские войска, это ж мы говорим! А в Крыму они реально стоят!""
Надеюсь, что он не обидится на цитирование.
https://plus.google.com/u/0/100903871335644471614/posts/U6rqzcGfoQm
"Забавно... "Они" не знают, что делать с RT...
Мы вот знаем, что делать с "Эхом" и "Дождём" - периодически заглядывать, фильтровать пропаганду и узнавать о вещах, которые "федеральные СМИ не находят существенными". А они - не знают... Пичалька (c) :-)
Особенно умилило вот это:
«Вдобавок к новостям RT также превратился в место, где выражают своё мнение американские диссиденты, включая крайне левых вроде Ноама Хомски, крайне правых вроде Патрика Бьюкенена и либертарианцев-маргиналов вроде Рона Пола. И хотя подобные мнения провокационны и непопулярны, RT позволяет американской аудитории с ними знакомиться.»
-- Ах-ах! Они видите-ли "провокационные" и "непопулярые" вещи излагают... Ну понятно, вещи "пристойные" и "популярные" зритель/слушатель может получить на Fox News, NBC и прочих "федеральных СМИ" :-D Ах ну да, на RT получают голос "маргиналы" - ну у нас тоже Немцов, Касьянов и прочие, примкнувшие к ним шахматисты иначе как маргиналами большинством не воспринимаются. Но почему не дать им слова (Немцов регулярно в федеральный "телеящик" попадает) и зачем ещё раз называть их маргиналами? Да и кто их маоргиналамии сделал? Ну про Немцова и К я знаю - они сами на свой маргинальный имидж пахали не покладая рук в 90-е. А вот г-н Робертс чем не угодил? Говорит не то? Ну извините, не знали, что у вас такая свобода слова... :-)
«В данной ситуации RT ведёт себя как хитрый продавец: сначала заманивает американского зрителя на трезвое отношение к происходящему в США, а потом подсовывает ему бессовестную российскую пропаганду»
-- А это - вообще многого стоит :-) Достаточно включить любой оппозиционный канал - сразу возникает ощущение, что в ГД все идиоты, что промышленности у нас нет, что кроме как качать нефть "русское быдло" ничего не умеет. А все талантливые, умные и красивые (!) люди - они думают что "паравалить". Не в этом ли суть "оппозиционности" - навязать зрителю/слушателю определённое мнение о своей стране? Посеять недовольство, вызвать ненависть к власти?
Господа, Вы просто столкнулись с тем, с чем нам приходится жить уже более 20 лет. Мы уже привыкли, у нас выработался иммунитет. Когда мы слышим что-либо в СМИ мы задаёмся сакраментальным вопросом: "кому это выгодно" (чтобы мы узнали о предмете именно в такой форме и именно в такой интерпретации)? Да не у всех развился этот навык, но рискну предположить, что эти 10%, у которых он выработался - они и есть те умные, кто "валить" не сподобился, и кто хочет сделать жизнь лучше здесь и, возможно, не только для себя.
Так что привыкайте господа. RT оттуда не уйдёт. По своей воле, во всяком случае. А пропаганда... Без неё никакое государство не может существовать - ни "кровавый режим", ни ваши "демократии". Разница только в направленности этой пропаганды. Но у нас, по крайней мере, так не врут :-) Врут, врут конечно, но по-другому.
Например, крайний "Бесогон" "царя нашего" ;-) Там знаменитый "правообладатель" и бенефициар от налога на технику, своим проникновенным голосом представил материал некоего ополченца. - Симпатичный молодой человек, с характерным восточно-украинским говором, с псевдонимом "фотограф" комментировал своё видео, которое "наш царь" окрестил не иначе как "пронзительное" и мегаправдивое. К видео претензий нет никаких, к молодому человеку-ополченцу и даже к "царю" - тоже. Но так уж вышло, что крупную ложь наших СМИ их совместная работа элементарно вскрыла. А именно: почему ВСУ наносят удары из тяжёлого вооружения по жилым кварталам Донецка. - Да просто потому, что из этих жилых кварталов по ним наносят удары ополченцы.
А сколько было болтовни в центральных СМИ, что это "варварство" ничем не мотивировано, что ополченцев в жилых кварталах нет? - Ну как же нет? Вот, в материале молодого человека, в хорошем качестве видим, что есть. Более того, он прямо говорит, почему ВСУ превратили "девятиэтажку" в "нежилой дом" с ужасными разрушениями. - Потому, что они базировались за этой девятиэтажной, потому, что их позиции располагались на её крыше и не только там.
Осуждаю ли я наши СМИ? - Да нет, кто я такой. Но враньё - фиксирую. Не могу я без этого.
Но у нас не обвиняют голословно в чём угодно кого угодно. Если говорят, что ВСУ использует иностранное оружие - то предъявляют его. Если говорят об иностранных наёмниках - предъявляют соответствующие видеоматериалы, если говорят о жертвах среди мирного населения - то показывают их.
Или вот, отсюдаhttp://www.svoboda.org/content/article/26836320.html (один из "голосов", которые вполне в трэнде "пристойных СМИ"):
«- В памяти у многих, думаю, просто визуально осталось, как Петр Порошенко продемонстрировал доказательства того, что российские военнослужащие присутствуют на территории Украины и активно участвуют в конфликте, воюя против украинских сил. Он с трибуны продемонстрировал захваченные военные билеты и паспорта российских военнослужащих - это очень запоминается…»
-- Я так и не понял: со слов Поршенко на Донбассе тысячи российских военнослужащих. Неужели никто не попал в плен? Неужели единственным подтверждением своих тезисов г-н Порошенко может предъявить только корочки российских паспортов? Почему нет в прямом эфире "помятых" российских военнослужащих, рассказывающих о том, как "преступное командование российских ВС" ставило перед ними преступные задачи? - Думаю потому, что таких "российских военнослужащих" в распоряжении ВСУ просто нет. Иначе об этом "звонили бы во все колокола", и не на "вшивых" "5-м канале" или "Iнтере", а на "гламурных" Fox News, NBC и прочих "центральных СМИ". - Интересно, что бы тогда сказали на RT... :-)"
Но! Добавлю "от себя" ещё одну цитату:
""Разговор со свидомитом
- а почему вы не отвоюете Крым, а только кричите, что Крым- Украина?
- Так потому, шо там российские войска стоят!
- Так вы ж говорите, что на Донбассе тоже российские войска, воюете же на Донбассе то!
- А-а! Так то, шо, на Донбассе российские войска, это ж мы говорим! А в Крыму они реально стоят!""
понедельник, 9 февраля 2015 г.
воскресенье, 8 февраля 2015 г.
суббота, 7 февраля 2015 г.
пятница, 6 февраля 2015 г.
Жёсткий Offtopic. О "вкусах"
Пятница. Сегодня можно.
Тут один "адепт Мака" мне бросил фразу:
"Виндоус 7.. Не упущу возможности потроллить тех идиотов, что проектировали ее интерфейс".
Не могу удержаться. Жёстко парирую:
"Мак.. Не упущу возможность потроллить тех идиотов, которые проектировали его интерфейс.
Среда разработки xCode. Cmd-F - ищу MyProcedure. Нашёл.
Переключаюсь на TextEdit. Cmd-F. Там MyProcedure. Ввожу 10003000. Нашёл.
Переключаюсь в xCode. Cmd-F. Там 10003000. Какого чёрта!!!! Я кого-нибудь об этом ПРОСИЛ?
РУКАМИ набиваю MyProcedure. Потому что ИСТОРИИ поиска - НЕТ. (Дебилы) Нашёл СЛЕДУЮЩЕЕ вхождение. Рад.
Переключаюсь на TextEdit. Cmd-F. Там MyProcedure. Какого чёрта!!! ГДЕ МОЙ 10003000???!?! ПРИДУРКИ.
Хочется откопать Джобса и посадить на кол."
Простите. Не сдержался :-( Но поведение Cmd-F - РЕАЛЬНО БЕСИТ.
Вывод?
На вкус и цвет все фломастеры разные. Не стоит никого называть идиотами.
Возможно эти "идиоты" руководствовались благими намерениями.
И нет, ни серебряной пули, ни идеального интерфейса. Люди - РАЗНЫЕ.
Извините, если кого задел.
Про Джобса я конечно в запале написал.
(+) http://programmingmindstream.blogspot.ru/2015/09/1154.html
"Вот на мой вкус в качестве примера "неудобной" разработки можно привести iOS: меня заставляют ради простейшего функционала лепить какие-то заумные вундервафли, без которых все вполне спокойно обходятся в андроиде при реализации аналогичного функционала.
Простые вещи обязаны делаться просто и быстро.
Добавление кнопки - простая операция. Добавление контекстного меню - тоже. Добавление пункта в контекстное меню - еще проще."
Тут один "адепт Мака" мне бросил фразу:
"Виндоус 7.. Не упущу возможности потроллить тех идиотов, что проектировали ее интерфейс".
Не могу удержаться. Жёстко парирую:
"Мак.. Не упущу возможность потроллить тех идиотов, которые проектировали его интерфейс.
Среда разработки xCode. Cmd-F - ищу MyProcedure. Нашёл.
Переключаюсь на TextEdit. Cmd-F. Там MyProcedure. Ввожу 10003000. Нашёл.
Переключаюсь в xCode. Cmd-F. Там 10003000. Какого чёрта!!!! Я кого-нибудь об этом ПРОСИЛ?
РУКАМИ набиваю MyProcedure. Потому что ИСТОРИИ поиска - НЕТ. (Дебилы) Нашёл СЛЕДУЮЩЕЕ вхождение. Рад.
Переключаюсь на TextEdit. Cmd-F. Там MyProcedure. Какого чёрта!!! ГДЕ МОЙ 10003000???!?! ПРИДУРКИ.
Хочется откопать Джобса и посадить на кол."
Простите. Не сдержался :-( Но поведение Cmd-F - РЕАЛЬНО БЕСИТ.
Вывод?
На вкус и цвет все фломастеры разные. Не стоит никого называть идиотами.
Возможно эти "идиоты" руководствовались благими намерениями.
И нет, ни серебряной пули, ни идеального интерфейса. Люди - РАЗНЫЕ.
Извините, если кого задел.
Про Джобса я конечно в запале написал.
(+) http://programmingmindstream.blogspot.ru/2015/09/1154.html
"Вот на мой вкус в качестве примера "неудобной" разработки можно привести iOS: меня заставляют ради простейшего функционала лепить какие-то заумные вундервафли, без которых все вполне спокойно обходятся в андроиде при реализации аналогичного функционала.
Простые вещи обязаны делаться просто и быстро.
Добавление кнопки - простая операция. Добавление контекстного меню - тоже. Добавление пункта в контекстное меню - еще проще."
четверг, 5 февраля 2015 г.
среда, 4 февраля 2015 г.
вторник, 3 февраля 2015 г.
Ссылка. Рекомендую к прочтению. Примеры тестовых работ
Интересный случай. Работодатель сам разбирает типичные ошибки кандидатов, в своих же тестовых заданиях.
http://www.auslogics.com/ru/about/examples
http://www.auslogics.com/ru/about/examples