Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima T, SashaMercury Согласно стандарту, указатель может указывать либо в аллоцированный объект, либо сразу за (в следующий за объектом байт). (Если платформа не позволяет хранить указатели за пределы выделенной памяти, то имплементация должна выделять на 1 байт больше) Все операции, в результате которых получаются указатели за пределами какого либо выделенного объекта (перед либо более 1 байта после) - это UB. Как и сравнение <, > с такими указателями SashaMercuryВы можете проверить его на скорость пожалуйста ? Не, мне уже некогда. Разрешаю вам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 17:33 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВообщем ладно, не хватало чтобы мы ещё тут поругались. Не будем мы ругаться, не переживай :) Я тебя к другому пытаюсь подвести. У меня такое впечатление что ты сам себе поставил ограничение "указатель = массив" и пользуешься указателями только как альтернативным синтаксисом массивов. Но указатель это больше чем массив. Например твой код выше Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. По сути нормально писать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Согласись что так лучше читается. Дополнительно заменил cur на start, т.к. название должно соответствовать смыслу. cur от current. Это уже так, придирки, суть в том что этот код и твой скомпилируются в одно и тоже, т.е. с кучей лишних вычислений. С указателями можно сделать тоже самое, но меньшим количеством операций: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. заметь на сколько меньше разных + - по сравнению с твоим кодом. Можно еще переделать чтобы в параметрах был указатель на конец строки (start + size - 1), тогда его не надо будет считать каждый раз. В данном случае еще нет лишних умножений, т.к. sizeof(char) = 1, если тип будет не char, а, например, int, то в реальности будет следующее, например код: Код: plaintext 1. 2. 3. 4. Реальные вычисления на каждом проходе цикла: 1. уменьшение i 2. вычисление адреса (a + i). Происходит так: адрес a + i * 4 байта (4 это sizeof(int)) если переписать указателями, то будет так Код: plaintext 1. 2. 3. тут только i-- что в реале произойдет как i -= 4 байта Вот в чем одно из основных преимуществ указателей над массивами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 17:57 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercury, у тебя ошибка в коде set_next_string(), в т.ч. в моих реинкарнациях. Запусти этот код и подумай как исправить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Нехорошая ошибка, т.к. будет происходить очень редко, поэтому ловить такие ошибки очень тяжело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 19:11 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Фух бротва. Сори что задержался. Пока неасилил свои пожелания по диапазонам n-m. Вот что есть на данный момент. Можете править Just For Fun. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 23:47 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, а чё ты с юникодом задумал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 00:04 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Некоторые пассажиры колотят национальные буквочки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 00:07 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonНекоторые пассажиры колотят национальные буквочки. не беспокоит, что их несколько десятков тысяч? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 00:33 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Ладно бох с ним. Не надо Юникод. Прошу потестить у кого под рукой есть Пингвин и Чорт в кедах. А я пока на Windows7+GCC на ноуте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 00:48 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 07:58 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonВот что есть на данный момент. Можете править Just For Fun. Сам правь, не компилируется. ИМХУ Рекурсия тут хорошо подходит, но накладных расходов у нее много, не производительно это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 10:57 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Сразу под "main" лишняя буковка. Ладно хрен с ним. Допилю еще два alphabet - выложу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 11:36 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Хех... запилил алфавиты. Взял названия из POSIX-like шаблонов регулярок. Теперь мысль - комбинировать наборы. Пунктуации + Цифирки. Или наоборот. Или обеспечить начало с альфа-символа а потом цифирки. Вобщем тестируйте. Предлагайте. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:02 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDima T, SashaMercury Согласно стандарту, указатель может указывать либо в аллоцированный объект, либо сразу за (в следующий за объектом байт). (Если платформа не позволяет хранить указатели за пределы выделенной памяти, то имплементация должна выделять на 1 байт больше) Все операции, в результате которых получаются указатели за пределами какого либо выделенного объекта (перед либо более 1 байта после) - это UB. Как и сравнение <, > с такими указателями SashaMercuryВы можете проверить его на скорость пожалуйста ? Не, мне уже некогда. Разрешаю вам по сути, то что я и говорил. Сегодня думал, а возможно ли вообще написать функцию, которая определяет принадлежит ли данный адрес, адресам выделенного участка памяти. Вероятно нельзя(возможно только полным перебором всех адресов, и то не факт) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:25 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryвозможно ли вообще написать функцию, которая определяет принадлежит ли данный адрес, адресам выделенного участка памятипамять линейна, вообще то. Берёшь в руки операторы сравнения, начало и конец выделенного участка и тестируемый указатель, и вуаля! - функция написана за 4 секунды ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:31 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryВообщем ладно, не хватало чтобы мы ещё тут поругались. Не будем мы ругаться, не переживай :) Я тебя к другому пытаюсь подвести. У меня такое впечатление что ты сам себе поставил ограничение "указатель = массив" и пользуешься указателями только как альтернативным синтаксисом массивов. Но указатель это больше чем массив. Например твой код выше Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. По сути нормально писать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Согласись что так лучше читается. Дополнительно заменил cur на start, т.к. название должно соответствовать смыслу. cur от current. Это уже так, придирки, суть в том что этот код и твой скомпилируются в одно и тоже, т.е. с кучей лишних вычислений. мне мой вариант больше нравится. Тем более size не самое хорошее название, ибо у нас сливается указатель(длинный идентификатор) и его длина. Длину лучше обозначать одним символом (это я для себя решил) Dima TС указателями можно сделать тоже самое, но меньшим количеством операций: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. заметь на сколько меньше разных + - по сравнению с твоим кодом. Можно еще переделать чтобы в параметрах был указатель на конец строки (start + size - 1), тогда его не надо будет считать каждый раз. Согласен, тут ваш код лучше. Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:34 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
egorych, не думаю так. Вы же видели, что Anatoly Moskovsky подтвердил мои рассуждения, причём сослался на стандарт. Если адрес не принадлежит тем адресам, по которым выделена память, то мы получаем undefined behaviour, потому, если мы получаем истинный результат, не факт что он действительно истинный. Хотя если получаем ложный, то наверняка знаем что он ложный. Интересное свойство. Как оно правильно называется в IT ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:37 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercury, у тебя ошибка в коде set_next_string(), в т.ч. в моих реинкарнациях. Запусти этот код и подумай как исправить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Нехорошая ошибка, т.к. будет происходить очень редко, поэтому ловить такие ошибки очень тяжело. завтра на нормальном мониторе проверю уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:52 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryegorych, не думаю так. Вы же видели, что Anatoly Moskovsky подтвердил мои рассуждения, причём сослался на стандарт. Если адрес не принадлежит тем адресам, по которым выделена память, то мы получаем undefined behaviour, потому, если мы получаем истинный результат, не факт что он действительно истинный. Хотя если получаем ложный, то наверняка знаем что он ложный. Интересное свойство. Как оно правильно называется в IT ? Наука есть такая. Fuzzy logic. Нечёткая логика. В ней обычно оперируют понятиями истин с вероятностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 14:14 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TИМХУ Рекурсия тут хорошо подходит, но накладных расходов у нее много, не производительно это. Два дня думаю над сохранением состояния. В случае если юзер нажал Ctrl+C или тикнул таймер (раз в минуту) приложение должно писать состояние своей FSM в какой-нить файл типа /var/run/pwdgen.fsm. При следующем старте с указанием опции --continue процесс должен возобновиться не с нуля а с этого состояния. Причём небольшой "нахлёст" допускается. Для pwdgen это не страшно. Главное - поскипать миллиарды уже отработанных состояний и не потерять работу двух-трех суток. Для варианта с рукотворным Stack или Queue я знаю как это сделать. Правда придётся полностью переколбасить алгоритм и рекуррентную процедуру pa(processAlphabet) развернуть в FSM. Мне это не улыбается. Мне нравится рекурсия и скорость работы пока устраивает. Другое дело что инстанциировать "рекурсию в определённом" состоянии я пока не знаю как. Вобщем это пока предмет основных моих размышлений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 14:22 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, изучил немного ваш код. А где перебор то ?) или пока ещё нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 14:59 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonDima TИМХУ Рекурсия тут хорошо подходит, но накладных расходов у нее много, не производительно это. Два дня думаю над сохранением состояния. В случае если юзер нажал Ctrl+C или тикнул таймер (раз в минуту) приложение должно писать состояние своей FSM в какой-нить файл типа /var/run/pwdgen.fsm. речь идёт о том что варианты будут генерироваться не все сразу, а за несколько запусков ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:02 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercurymaytonпропущено... Два дня думаю над сохранением состояния. В случае если юзер нажал Ctrl+C или тикнул таймер (раз в минуту) приложение должно писать состояние своей FSM в какой-нить файл типа /var/run/pwdgen.fsm. речь идёт о том что варианты будут генерироваться не все сразу, а за несколько запусков ? Речь в том что это не просто утилита. А это скорее всего процесс. Который будет работать долго. Не один день. И не неделю. Вот я и думаю наперёд о сохранении расчётов. Такой уж у меня пунктик. Думаю наперёд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:10 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercurymayton, изучил немного ваш код. А где перебор то ?) или пока ещё нет Там всё уже есть. Это рабочий код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:10 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Значить любилям гонять бенчмарки и прочим кто в танке. Первое. Не запускать вывод на экран. Он физически тормозит. Второе . Запускать с выводом в файл или с выводом в пустое устройство NULL. Счастливые обладатели Толтого Тукса или Чёрта в кедах юзают /dev/null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:22 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Если задача сводится к тому что надо гонять генератор по кругу и иногда получать от него текущее состояние, то можно так Код: plaintext 1. 2. 3. 4. Далее при выводе считаем что i это N-ричное число, где N это количество символов в алфавите отображения, далее переводим значение в нужную систему счисления и выводим. Например: при алфавите a-z это 26-ричная система счисления, тогда значение 1234 будет "avm" Как вариант: можно снимать текущее значение другим потоком. Можно несколько потоков запустить, а результат склеивать. По поводу промежуточного хранения: может не заморачиваться и брать для старта какой-нибудь хэш от текущей даты/времени? PS Только паузу надо добавить чтоб проц не спалить такой считалкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:28 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38809550&tid=2019107]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 304ms |
| total: | 452ms |

| 0 / 0 |
