Как стать автором
Обновить
136
0.1

Пользователь

Отправить сообщение
Ну и главное: ссылки на источники. Их нет. Вы хотя бы раз в глаза видели серьезную научную статью по истории?


Откройте Рыбаков «Киевская Русь и русские княжества XII-XIII веков».Академия Наук СССР 1982 год. Там ссылки далеко не везде — остальное авторские исследования на основании опыта автора. Автор просто знает, что было по современным представлениям вот так и ему нет нужды на что-то ссылаться в таких вещах, а потому просто пишет ход событий. А здесь я дал ссылку на статью, даже не претендующую на научную работу. Обычная статья в стиле Я.И. Перельмана, т.е. описательного типа.

Антарктиду открыли русские. А, значит, она по праву должна принадлежать России


А вот это право вообще очевидное и в 19 веке им и руководствовались. И не надо кивать на Колумба — когда выгодно, можно как отрицать (и найти 1000 причин), так и применять (и тоже найти 1000 причин). Ровно так и случилось с Антарктидой.

Что до Германии, то английские деньги потекли в эту страну тоже примерно около цифры 1929.


А что, не так? Это также очевидный факт.
До 1929 года преимущественно из США в Германию поступило кредитов на сумму в 21 млрд марок.

Хорошая такая помощь.
Зато это почему-то увидело множество народу и слили мне карму в минус с +9. :) Ну и хрен с ней. Одного не понимаю, зачем нужны такие собеседники, которые на любой материал пылают праведным гневом и бросаются мстить, даже не попытавшись хотя бы подискутировать для начала? Если я ошибся, ну так укажите на ошибку. Я же дал ссылку на диссертацию, где упомянуто право первооткрывателя? Дал. Оно было? Было. Ну так и что это за детский сад? «Отвратительно, и симптоматично.» — Не понимаю, что такого обо мне знает этот человек, чтобы вешать на меня такие ярлыки? Бред. Так никакого конструктивного диалога не получится. Вы представляете, если бы такая тема была бы в научной среде? Менделеев вон теории Бутлерова терпеть не мог и студентам об этом непрерывно говорил. Вот он бы на Бутлереве бы отыгрался бы с таким подходом к карме! А он почему-то, наоборот, идеи Бутлерова отрицал, а самого рекомендовал в Академию Наук принять, насколько я помню. В общем, лучше тут ничего никогда не комментировать — всё равно всё без толку.
Да вот, собственно, чего пишут (там про Арктику, но суть та же):

Проблемы, связанные с приобретением новых территорий, всегда были очень актуальны для международного права. В течение длительного периода доктрина и практика международного права твердо придерживалась положения, что факт открытия «terra nullius», соединенный с оставлением некоторых признаков принадлежности государству — первооткрывателю, достаточен для получения правового титула на эту землю. На практике открытие могло сопровождаться такими символическими актами, как поднятие флага, креста и т.п. [6, с. 14].

6. Михина И.Н. Международно-правовой режим морских пространств Арктики: Дисс. … канд. юрид. наук. М., 2003.

ссылка
А вообще, Антарктида должна была принадлежать России на правах первооткрывателей. А вот на тему, почему это не так, была статья.
Без внешнего ОЗУ как то проще собирать, не так ли?


Кому как. У меня таких ОЗУ навалом.

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


Только у FDD контактов довольно много и тайминги дисководов довольно маленькие. Нет, если спектрум будет ждать дисковод — пожалуйста. Но это нестандартный режим работы. Вот Amiga, например, не ждёт и сразу пошлёт такой эмулятор подальше.
А эти часы не идут как шпионское оборудование? А то можно поиметь кучу проблем почём зря.
По-моему, пападают (слежение, прослушка). Следовательно, в РФ такое запрещено.
А, увидел, внизу для SIPP места. Только SIPP совместим по ножкам с SIMM-30 Pin.
Там 8 МГц процессор. И турбо, действительно, не включено.
А каким образом 8 МГб поставить на такую плату? Там же память на рассыпухе.
О! У меня почти такая же есть. :) Надо попробовать как-нибудь её достать и запустить BC3.1. :) А сама игра на ней идёт так: https://www.youtube.com/watch?v=4hYXPHeZ7aA

Кстати, Idot сделал на OpenGL Wolf-3D. :)
Вот этот метод:




Была такая идея в 80-е — метод точек (забыл их название — узловые, что ли), которые получаются при расфокусировке линзы камеры. Эти точки соединяли и после этого анализировали. В принципе, получалось приемлемое качество распознавания.
Прошу прощения что резко ответил утром, формулировка некрасивая вышла.

Да обычная самая формулировка! :) Спасибо за комментарии! Но я думал, что проблемы будут более необычными – перечисленное мне известно, но в основном проходят как рекомендации и дело вкуса (например, класс ящиков – это во много дело вкуса – слишком простой объект, эти ящики).

1) Стиль именования переменных следующий: структуры и классы начинаются с большой буквы S и C. Экземпляр структуры или класса начинаются с маленькой буквы: SCard sCard. Подчёркивание указывает в данном случае индивидуальное имя объекта: CMain cMain_Local. Если класс унаследован от кого-либо, то тот, от кого унаследован класс пишется перед именем наследника, а между ними ставится подчёркивание: class CWnd_Main:public CWnd. Параметры функции чаще всего идут маленькими буквами, но могут быть и большими (если, как мне кажется, они выглядят лучше). В данном случае подчёркивание может разделять части названия или функциональное назначение: dx_1; Имена функций всегда начинаются с больших букв и в тексте большими буквами разделяются отдельные слова в имени функции.

2) Данная программа изначально была написана на Си. Чистом Си (потому что с cpp компилятором для PSP я разобрался позже). Поэтому из ООП тут только обёртка

3) Ну, с магическими числами я согласен. А вот с константами вместо макросов не соглашусь. Это дело вкуса. Да, макрос проходит через единицу трансляции, но не для этого ли он макросом и делался? Он потому и макрос, что должен быть виден и доступен во всём коде. Константа же – локальная фишка. Локальность требуется редко. К тому же непонятно, как удобно именовать константы, чтобы в коде сразу было видно, что это не переменная, с которой можно что-то делать и при этом легко её найти. Макрос же у меня пишется всегда большими буквами и легко выделяется в коде. И сразу же ясно, что это – макрос, не переменная.

4) Дело в том, что ради одного-двух считываний делать указатель на элемент с индексом бессмысленно. Он не добавит читабельности, ибо будет использован те же один-два раза.
А вы в числе счастливчиков, которые успели это купить. :)
Я не являюсь программистом по специальности — моя специальность квантовая электроника и лазерная техника. Однако, я очень часто пишу программы. Я пишу их около 20 лет на самых разных языках (от бейсика до Си через паскаль и ассемблеры разных процессоров) под разные операционные системы от Windows до QNX. Насколько сложные я пишу программы? Трудно сказать, но аппаратными комплексами уровня изделий военного назначения они вполне управляют. И я не очень понимаю, чего конкретно вы ждёте от кода? Я видел код многих изделий — там нет также ничего понятного стороннему человеку. Не зная идеи работы программы, невозможно в ней разобраться. А идея может быть очень непростой. Для этого и существуют комментарии.
Вот смотрите, давайте возьмём вот эту функцию:

//----------------------------------------------------------------------------------------------------
//переместить карту из ящика s в ячейку d
//----------------------------------------------------------------------------------------------------
bool CWnd_Main::MoveCard(long s,long d)
{
 long n;
 long s_end=0;
 long d_end=0;
 //ищем первые свободные места в ящиках
 for(n=0;n<53;n++)
 {
  s_end=n;
  if (sCard_Box[s][n].Value<0) break;
 }
 for(n=0;n<53;n++)
 {
  d_end=n;
  if (sCard_Box[d][n].Value<0) break;
 }
 if (s_end==0) return(false);//начальный ящик пуст
 //иначе переносим карты
 sCard_Box[d][d_end]=sCard_Box[s][s_end-1];
 sCard_Box[s][s_end-1].Value=-1;//карты там больше нет
 return(true);
}


Вам лично чего в этой функции не нравится (про магические числа не стоит — я согласен, что их можно было и убрать)?

А в этой функции?

//----------------------------------------------------------------------------------------------------
//переместить карты с учётом правил
//----------------------------------------------------------------------------------------------------
void CWnd_Main::ChangeCard(long s_box,long s_index,long d_box,long d_index)
{
 if (d_box>=2 && d_box<9)//если ящик на игровом поле
 {
  //если он пуст, то класть туда можно только короля
  if (d_index<0)
  {
   if (sCard_Box[s_box][s_index].Value==12) ChangeBox(s_box,s_index,d_box);//наша карта - король, перемещаем её
   return;
  }
  //иначе, класть можно в порядке убывания и разных цветовых мастей
  if (sCard_Box[d_box][d_index].Value<=sCard_Box[s_box][s_index].Value) return;//значение карты больше, чем та, что есть в ячейке ящика
  if (sCard_Box[d_box][d_index].Value>sCard_Box[s_box][s_index].Value+1) return;//можно класть только карты, отличающиеся по значению на 1
  CARD_SUIT md=sCard_Box[d_box][d_index].Suit;
  CARD_SUIT ms=sCard_Box[s_box][s_index].Suit;
  if ((md==CARD_SUIT_SPADES || md==CARD_SUIT_CLUBS) && (ms==CARD_SUIT_SPADES || ms==CARD_SUIT_CLUBS)) return;//цвета масти совпадают
  if ((md==CARD_SUIT_HEARTS || md==CARD_SUIT_DIAMONDS) && (ms==CARD_SUIT_HEARTS || ms==CARD_SUIT_DIAMONDS)) return;//цвета масти совпадают
  ChangeBox(s_box,s_index,d_box);//копируем карты
  return;
 }
 if (d_box>=9 && d_box<13)//если ящик на поле сборки
 {
  //если выбрано несколько карт, то так перемещать карты нельзя - только по одной
  if (GetCardInBox(s_box)>s_index+1) return;
  //если ящик пуст, то класть туда можно только туза
  if (d_index<0)
  {
   if (sCard_Box[s_box][s_index].Value==0)//наша карта - туз, перемещаем её
   {
    DrawMoveCard(s_box,s_index,d_box);   
   }
   return;
  }
  //иначе, класть можно в порядке возрастания и одинаковых цветовых мастей
  if (sCard_Box[d_box][d_index].Value>sCard_Box[s_box][s_index].Value) return;//значение карты меньше, чем та, что есть в ячейке ящика
  if (sCard_Box[d_box][d_index].Value+1<sCard_Box[s_box][s_index].Value) return;//можно класть только карты, отличающиеся по значению на 1
  CARD_SUIT md=sCard_Box[d_box][d_index].Suit;
  CARD_SUIT ms=sCard_Box[s_box][s_index].Suit;
  if (ms!=md) return;//масти не совпадают
  DrawMoveCard(s_box,s_index,d_box);
  return;
 }
}


По-моему, они прозрачны донельзя. Или я ошибаюсь?
Если не секрет, что конкретно вам не нравится в коде? Я не понимаю. Покажите, если не сложно, пример хорошего кода.
Описанное gbg, мягко говоря, субъективное мнение. Если ему нравятся константы, то я их терпеть не могу — минимум глобальных переменных. Если его смущает функция больше 20 строчек, то это тоже маразм — линейная последовательность без ветвлений не требует сокращения. Функциональное деление? Вообще-то, оно там есть. Странные переменные? В них есть логика. s — source, d-destination, n,m,k,l — переменные циклов исторически (в таком порядке), 1-начальная точка, 2-конечная, d_чего-либо — приращение величины. xl-левая граница, xr-правая. Ну и так далее. Можно, конечно, макросами задать всякие 53 и коды ящиков. Но не сделал.
Есть одно «но». Этому проекту — четыре года (и его давно все желающие видели). :) На тот момент вообще ещё ничего не было. Что касается ардуины — там то же самое, но без большого ОЗУ. Это можно сделать. Но вот в конкретно этом проекте есть внешнее ОЗУ по причинам, обозначенным в тексте статьи.
А вот про FDD-эмулятор из ардуины я не очень понял — на картинках и в тексте я не увидел речи про FDD. Я знаю, что имеющиеся эмуляторы дисководов для ZX-Spectrum только одной atmega328 не обходятся.
Я не совсем своё ПЗУ прошиваю- я просто константы уменьшил в 4 раза.

Нужно заменить в штатном ПЗУ-48 следующие байты.

Для скорости в 2 раза больше:

Адрес:1409 Записать:206 Было: 156
Адрес:1416 Записать:227 Было: 198
Адрес:1424 Записать:228 Было: 201
Адрес:1432 Записать:236 Было: 212
Адрес:1446 Записать:216 Было: 176
Адрес:1479 Записать:217 Было: 178
Адрес:1487 Записать:229 Было: 203
Адрес:1492 Записать:215 Было: 176
Адрес:1512 Записать:5 Было: 22

После этого можно загружать с двухкратной скоростью. На запись это не распространяется.

Для скорости в 4 раза большей цифры другие:

Адрес:1409 Записать:231 Было: 156
Адрес:1416 Записать:241 Было: 198
Адрес:1424 Записать:242 Было: 201
Адрес:1432 Записать:245 Было: 212
Адрес:1446 Записать:236 Было: 176
Адрес:1479 Записать:237 Было: 178
Адрес:1487 Записать:243 Было: 203
Адрес:1492 Записать:236 Было: 176
Адрес:1512 Записать:1 Было: 22


А так — можно любой протокол прикрутить, конечно. :) Но я такое не делал.
зачем так сложно? можно организовать кольцевой буфер.


А это и есть кольцевой буфер фактически, только голова и хвост не бегают синхронно. :) А, ещё вот что — на FAT16 может требоваться перечитать положения секторов — они не обязаны последовательно идти. А ОЗУ 1 кб у atmega16.

Чую все можно успеть, даже на скорости х20, да и ОЗУ тут не смотрится — лишнее.


Так попробуйте! :) Я-то заложил на будущее возможность простого ускорения, но не стал так разгоняться.
Она свыше штатной может работать нестабильно.

Информация

В рейтинге
2 861-й
Откуда
Санкт-Петербург и область, Россия
Зарегистрирован
Активность