Перейти к содержимому

Фото
* * * * * 1 голосов

Курилка для программистов


  • Вы не можете создать новую тему
  • Please log in to reply
1087 ответов в этой теме

#391 O_Vlad

O_Vlad
  • Постоялец
  • 895 сообщений

Отправлено 20 февраля 2015 - 15:44

Халтура ннада http://www.vw-golfcl...ead.php?t=66677


Сообщение изменено: vladimir3147 (20 февраля 2015 - 15:45 )

  • 0

#392 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 19 апреля 2015 - 13:46

 

Страшно подумать, что это мой будущий инструктор :lol: 
ЛОЛ 


  • 0

Вначале делаю, потом думаю :)


#393 kuznets

kuznets
  • Постоялец
  • 5 850 сообщений

Отправлено 27 мая 2015 - 05:49

Где в эстонии книжку можно приобрести?

Приемы объектно-ориентированного проектирования. Паттерны проектирования


  • 0

Типичный, классический кузнец.


#394 djeux

djeux
  • Постоялец
  • 7 517 сообщений
  • Откуда:Tallinn, Kristiine

Отправлено 27 мая 2015 - 07:04

http://lmgtfy.com/?q... проектирования


  • 1

Мужчина без женщины - всё равно, что дерево без гусеницы. © не Gra4-а, ему знакомый сказал


#395 kuznets

kuznets
  • Постоялец
  • 5 850 сообщений

Отправлено 27 мая 2015 - 07:54

Ну поищи, в ЭСТОНИИ.
  • 0

Типичный, классический кузнец.


#396 Bruce Wayne

Bruce Wayne

    The Dark Knight

  • Постоялец
  • 2 811 сообщений
  • Откуда:Gotham City

Отправлено 27 мая 2015 - 09:11

Ну поищи, в ЭСТОНИИ.

нигде. Но зато есть ozonru.eu

http://www.bookdepository.com/

 

а вообще lmgtfy


  • 0

если я покажу свои сиськи то ты не отстанешь от них никогда, и я стану в сто раз популярнее всех баб на форуме и язык у тебя прилипнет к бороде)))) Потому что у меня очень роскошный бюст, но я ни за что не нуждаюсь, чтоб на него пялились похотливые ненасытные брюсы; // удалите сообщения с моей синей фоткой где я под феном  :D , я вам другую поставлю)))

 


#397 kuznets

kuznets
  • Постоялец
  • 5 850 сообщений

Отправлено 27 мая 2015 - 09:38

Блин, форум такой форум. Мне нужно приехать и взять, нет времени ждать доставки, иначе бы заказал на озоне.
Хз как вы тз разбираете, тоже условия задачи обсуждаете с изменением на 90%?
  • 0

Типичный, классический кузнец.


#398 skill-AB

skill-AB

    Huge Cojones

  • Постоялец
  • 9 702 сообщений

Отправлено 04 июня 2015 - 00:27

всё равно ты все паттерны за день не освоишь, не рви жопу


  • 0

летела жизнь в плохом автомобиле и вылетала с выхлопом в трубу


#399 kuznets

kuznets
  • Постоялец
  • 5 850 сообщений

Отправлено 04 июня 2015 - 07:01

Да я ездил в коммандировочку и хотел купить книжку, чтоб не скучно было в дороге. Тел сажать не хотел, да и читать приятней с бумаги.
  • 0

Типичный, классический кузнец.


#400 NoExist

NoExist
  • Пользователь
  • 217 сообщений
  • Откуда:Estonia, Keila

Отправлено 02 августа 2015 - 15:42

Добрый вечер, какие книги посоветуюте для изучения PHP, JAVA, SQL?
  • 0

#401 kuznets

kuznets
  • Постоялец
  • 5 850 сообщений

Отправлено 02 августа 2015 - 16:23

Youtube
  • 0

Типичный, классический кузнец.


#402 NoExist

NoExist
  • Пользователь
  • 217 сообщений
  • Откуда:Estonia, Keila

Отправлено 02 августа 2015 - 16:30

Так и занимаюсь, или методом проб и ошибок, но хотелось бы книжечку прикупить, а абы какую тоже не хочется... =)


  • 0

#403 Mestnyj_chel

Mestnyj_chel
  • Новобранец
  • 1 сообщений

Отправлено 13 августа 2015 - 22:28

Кто чего слышал хорошего/плохого про конторы Creative Mobile и Transferwise в Таллине?


  • 0

#404 Kurcha

Kurcha
  • Постоялец
  • 1 562 сообщений
  • Откуда:IASB72

Отправлено 29 августа 2015 - 23:23

Слышал, что туда ещё попасть нужно суметь. Ну это так... вилами по воде писано.


  • 0
Мудрость, полученная в бою - твоё богатство. Мудрость, полученная без боя - твоё счастье.

#405 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 09 сентября 2015 - 17:06

В таблице БД, в колонке значения шли от 1 до n (где n - число строк) без повторов в любом порядке, но в какой-то момент в коде появился баг и некоторые числа стали повторяться, некоторые вообще пропали. 
Поставлена задача - обнаружить все связанные объекты, где есть эта проблема.
Начал искать решение: мускуль не поддерживает series и их генерацию (вначале думал как-то с помощью вычитания: WHERE NOT IN).
И так и эдак пробовал подступиться - всё ерунда, очень сложно и громоздко. 
Хотел уже забить на БД решение и решить через сам язык программирования, чего я делать очень не хотел, потому что надо писать доп.код, который вообще мало в делу относится, да и само решение было бы неэффективным ни по памяти, ни по времени, но случайно вспомнился такой факт:  

SUM(1..n) = n * (n+1) / 2.

С помощью COUNT и SUM получил нужные значения, сравнил и вывел (HAVING) там, где не равно. Вот так школьная математика спасла кучу времени и нервов )

А мускуль всё-таки редиска. 
Может кому когда пригодится, что врядли, конечно, но всё же ) 


Сообщение изменено: Akhenaton (09 сентября 2015 - 17:13 )

  • 0

Вначале делаю, потом думаю :)


#406 Zero

Zero

    TRUST NO ONE

  • Постоялец
  • 10 668 сообщений
  • Откуда:Таллин

Отправлено 09 сентября 2015 - 17:25

Дубликаты можно выцепить, например, так:

 

select _id, val from (select _id, val, count(*) as aaa from test group by val) as t1 where aaa <> 1

 

Отчего не сделать unique?


  • 1
Моя Родина - СССР! Пролетарии всех стран, соединяйтесь!
-----------------------------------------------------------------------
Ясность - одна из форм полного тумана. Форумчане, давайте жить дружно!

#407 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 09 сентября 2015 - 17:33

Да, точно.
Сгруппировать по самому значению (повторки схлопнутся) и сравнить количество. Тоже отличное решение. А я что-то зациклился на нетривиальных решениях и чуть не в ту степь вообще ушёл.  


Сообщение изменено: Akhenaton (09 сентября 2015 - 17:34 )

  • 0

Вначале делаю, потом думаю :)


#408 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 10 сентября 2015 - 08:29

select _id, val from (select _id, val, count(*) as aaa from test group by val) as t1 where aaa <> 1

 

Мускул действительно это скушает? Я к тому, что группировка по _id не ведется, однако выводится и не агрегируется. Тогда, по логике, это должно дать тот же результат:

select _id, val
from test
group by val
having count(*) > 1

unique по любому надо.


  • 0

#409 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 10 сентября 2015 - 08:55

Кстати, кроме повторок надо было еще обнаруживать "дырки".
Типо: [1,2,3,5]. 4-ка отсутствует. Или смешанный вариант, когда одна цифра пропала, а другая (другие) повторяются.
Для начала неплохо, но могут быть и false negative, к сожалению :( 
[1,2,2,5], например, не задетектится. Но комбинированный вариант (с группировкой) может помочь.


Сообщение изменено: Akhenaton (10 сентября 2015 - 08:58 )

  • 0

Вначале делаю, потом думаю :)


#410 Delete__

Delete__
  • Постоялец
  • 1 959 сообщений

Отправлено 10 сентября 2015 - 09:06

Мускул действительно это скушает? Я к тому, что группировка по _id не ведется, однако выводится и не агрегируется. Тогда, по логике, это должно дать тот же результат:

select _id, val
from test
group by val
having count(*) > 1

Да, это работает в мускуле и вообще мой goto метод поиска дубликатов. :)


  • 0

#411 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 10 сентября 2015 - 09:24

 

 

Кстати, кроме повторок надо было еще обнаруживать "дырки".
Типо: [1,2,3,5]. 4-ка отсутствует. Или смешанный вариант, когда одна цифра пропала, а другая (другие) повторяются.
Для начала неплохо, но могут быть и false negative, к сожалению  :( 
[1,2,2,5], например, не задетектится. Но комбинированный вариант (с группировкой) может помочь.

 

 

Можно эмулировать generate_series запросом на подобии следующего:

select 1 + (@num:=@num + 1)
from any_table, (select @num:=-1)
limit xxx

Где any_table - любая таблица с кол-вом записей >= наибольшее значение val исследуемой и xxx = наибольшее значение val исследуемой.

К этому выводу left join исследуемой во val и по результату уже одним проходом можно получить и дырки и повторения.

 


Сообщение изменено: Vitalts (10 сентября 2015 - 09:28 )

  • 2

#412 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 10 сентября 2015 - 09:27

 

 

 

 

 

Можно эмулировать generate_series запросом на подобии следующего:

select 1 + (@num:=@num + 1)
from any_table, (select @num:=-1)
limit xxx

Да, я про это читал, но что-то совсем это дело не нравится )
Добавил "DISTINCT" в SUM - теперь детектит и [1,2,2,5] 


  • 0

Вначале делаю, потом думаю :)


#413 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 10 сентября 2015 - 09:31

Не нравится ему... У тебя же этот код не на автомате в продакшене будет крутится, это разовая задача по вычещению базы, тут любые средства хороши, если они дадут нужный эффект в короткие сроки. Починил базу, ключи поставил и забыл


  • 0

#414 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 10 сентября 2015 - 09:39

Не, ну, такое решение вполне имеет право на существование, но если оказалось, что можно решить задачу чуть с другой стороны, без использования всяких хаков, то почему нет? ) 


  • 0

Вначале делаю, потом думаю :)


#415 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 10 сентября 2015 - 09:52

Само собой, если для разовой задачи решение уже найдено и реализовано, то к чему ломать голову над иными вариантами. Но если иные варианты все же нашлись, отчего бы их не отложить в памяти или более долгоживущем и лего доступном источнике информации на "авось пригодится"


  • 0

#416 Zero

Zero

    TRUST NO ONE

  • Постоялец
  • 10 668 сообщений
  • Откуда:Таллин

Отправлено 10 сентября 2015 - 13:14

Vitalts, да, он нормально подзапросы обрабатывает.

 

Тут вообще что-то менять надо - unique ставить против повторов - раз, что-то против дырок - два. Триггер там или еще что.

Akhenaton, почему надо полагаться на последовательность в этом коде?


Сообщение изменено: Zero (10 сентября 2015 - 13:15 )

  • 0
Моя Родина - СССР! Пролетарии всех стран, соединяйтесь!
-----------------------------------------------------------------------
Ясность - одна из форм полного тумана. Форумчане, давайте жить дружно!

#417 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 10 сентября 2015 - 16:11

Само собой, если для разовой задачи решение уже найдено и реализовано, то к чему ломать голову над иными вариантами. Но если иные варианты все же нашлись, отчего бы их не отложить в памяти или более долгоживущем и лего доступном источнике информации на "авось пригодится"

Да, но я особо с псевдо-series никогда не игрался в мускуле. 
Надо будет разобраться.

 

почему надо полагаться на последовательность в этом коде?

Про какую именно последовательность речь? 


  • 0

Вначале делаю, потом думаю :)


#418 Zero

Zero

    TRUST NO ONE

  • Постоялец
  • 10 668 сообщений
  • Откуда:Таллин

Отправлено 10 сентября 2015 - 16:13

Akhenaton, зачем нужно это поле, к которому такие жесткие требования - последовательность без пропусков?


  • 0
Моя Родина - СССР! Пролетарии всех стран, соединяйтесь!
-----------------------------------------------------------------------
Ясность - одна из форм полного тумана. Форумчане, давайте жить дружно!

#419 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 10 сентября 2015 - 16:49

Akhenaton, зачем нужно это поле, к которому такие жесткие требования - последовательность без пропусков?

Да не особо-то жесткие. Поле задаёт порядок связанных объектов, которые можно менять местами. 
Вся проблема вскрылась, когда возникла необходимость сделать эту информацию доступной по api для партнёров. Для себя всё равно - если относительный порядок соблюдён, то без разницы.
А партнёру как-то не хочется выдавать такое, пересчитывать на (1..n) каждый раз - тоже.


  • 0

Вначале делаю, потом думаю :)


#420 Дык

Дык
  • Постоялец
  • 10 897 сообщений
  • Откуда:/dev/null

Отправлено 13 сентября 2015 - 18:18

Всех причастных - с днём!  ^_^


  • 0

Вначале делаю, потом думаю :)