Провайдер подменяет сертификат на свой, просто так? Ага, прямо таки MITM. Сам был в шоке и даже написал в поддержку, но никто не ответил пока что. :) Тем, у кого дом.ру, например, я рекомендую поставить dnscrypt. И все блокировки обходятся, по крайней мере пока DPI не включат. Я прям на роутер поставил, например.
Джо, выложи пожалуйста код куда-нить на гитхаб или битбакет или кодплекс. Спасибо. :-)
Я считаю, что автор в праве как указывать цену, так и отправлять в пм. Во-первых, это клиенту нужен его софт. И если нужен — клиент напишет. Как минимум для сравнения цены с конкурентами, если такие есть. Во-вторых, каждый оценивает свои трудозатраты по-разному, каждый использует разное ценообразование. В итоге, если цена какому-то человеку покажется завышенной — топик превратится в срач, а не в обсуждение конкретной программы. Плюс отправка в ПМ позволяет мягко показать человеку, что ты не хочешь с ним работать. Либо хочешь, но за ОГРОМНЫЕ бабки. :) Но, разумеется автору тоже хочется свой софт продать. Поэтому, тут нужно взвешенное и продуманное решение, особенно для начинающих разработчиков. Например, я бы ни на секунду не задумался узнать цену у Алекса, Джо, Гибата, Андрея и многих других — что может быть страшного в написании личного сообщения?.. Заодно можно узнать какие-то дополнительные детали и уточнить, как оплачивать.
Nice to know, that my old cpw is still in use. :) There's a pretty simple way to create an extra java app for packing cups after patching. With the complete source code on the codeplex, of course.
обновление 2.3.3.34 теперь при открытии патчей размер файлов указывается правильный, а не как раньше упакованный. На старых версиях тотала работает не корректно Банально не проверяю на них. Проверяю на 8.0+ версиях.
Маленькое обновление. Теперь при открытии патч-файлов размер упакованных файлов будет указан верно, а не сжатый, как было ранее.
обновление 2.3.3.34 теперь при открытии патчей размер файлов указывается правильный, а не как раньше упакованный.
I have only these: [IMG]
А я за программирование. Не знаю на счет вузов в мск и питере, не оттуда я, но могу сказать, что сейчас IT — это область в которой не хватает кадров всегда. Зарплата только по началу будет не шибко хорошая (ага, прям у стоматологов сразу золотые унитазы?), а дальше зависит от того, как будешь работать. Важно другое, откуда уверенность, что в IT, и в программировании в частности, у тебя будет интерес? Это пожалуй самая рутинная работа.
Я если честно, не против скинутся, и купить упаковку, но как по мне, искать тех, кто еще желает скинутся, не удобно. Да и цена слишком велика, я бы эту цену оценил в случаи полной приватной версии. А так, распаковка в шаре, а упаковку за платно (не стоит того) сугубо мое мнение. дык я не говорил что упаковка будет в шаре. а так, я же называл тебе сумму, это разве серьезно? :)
Небольшое обновление. Нацелено скорее на скорость работы, чем на что-то еще. Если кому-то интересны функции упаковки пишите в лс, обсудим.
Маленькое обновление. В нем всего по чуть-чуть. Если кому-то еще интересны функции упаковки пишите в лс, обсудим.
Или же если это возможно, то скажите взялся бы кто-нибудь за такую работу и сколько бы запросил за нее денег? Так скажем "Много" Ну, много, для каждого человека понятия разные :) Может быть есть какие-то примеры по другим проектам, не видели? Реверс инжиниринг тема дорогостоящая, и если я правильно понял, то специалиста именно этой "сферы деятельности" мне нужно искать. Очень дорогостоящая. Тем более тут нужен серьезный опыт: разбор протокола обмена данными, криптография (хотя на стадии альфа скорее всего шифрования нет) и т.д. и т.п. Человек нужен умный, смекалистый. Плюс разработчики тоже не лохи, наверняка защищают свое детище. Так скажем "Много" Ну, много, для каждого человека понятия разные :) Может быть есть какие-то примеры по другим проектам, не видели? Реверс инжиниринг тема дорогостоящая, и если я правильно понял, то специалиста именно этой "сферы деятельности" мне нужно искать. Ну я так думаю не меньше чем 100к рублей. ~ 100k это в лучшем случае пара месяцев разработки. Если людей несколько, то вообще один. За доброе слово никто работать не будет. А за месяц-два сервер не сделать, если исходных данных никаких нет.
Сколько? Если действительно интересно, можно написать в пм. Не ты один уже спрашиваешь, можно вскладчину решить вопрос. Думаю, что человек с 5-х, 5-и это будет чисто символическая сумма. Для меня это просто академический опыт, на C++ я не так хорошо пишу как на C#. :) Кстати, если кому-то интересен исходник, могут мне написать, я готов его продать в надежные руки. При этом я сам не отказываюсь его поддерживать — github и bitbucket для организации процесса в самый раз. Скоро будет обновление, в котором будет еще больше ускорена работа, появится процесс распаковки и еще пара мелочей.
Небольшое обновление, навел красоту. Внешне должно казаться быстрее. P.S. Пользователем tartor был обнаружен баг с игрой RWPD (HDP). Постараюсь исправить его в следующей версии. Ох уж эти китайцы.
Я обычно пишу наследников BinaryReader, BinaryWriter, для удобного, например, чтения/записи строк фиксированной длины, можно еще как-то кастомизировать, если хочется упростить основной код приложения. Ну, наследник-то может быть один, либо List либо Reader-Writer, а городить своих клонов с мультифункционалом — нелогично же.
Попросили разжевать. Ок, погнали. 0. аааа, название структуры Object! убейте меня! 1. Использование структур. Структуры изначально появились в c# для того, чтобы взаимодействовать с winapi и всяким com-подобным хламом. Тому есть миллион причин, цитировать книжки я не буду. Используйте классы. 2. Повсюду static (иногда еще и protected static, sic! :) ). Безумие. Как потом поддерживать этот код? Static-классы в c# для меня это в первую очередь лучшая альтернатива Singleton'у — главному антипаттерну тысячелетия. :) 3. pdev верно заметил про using. Еще отмечу, что использовать любые потоки как поле в классе должно автоматически вынуждать реализовывать интерфейс IDisposable. Именно поэтому я, например, использую using, чтобы не громоздить говно в куче — его и без нас там хватает. Идеально (для загрузки/сохранения) передавать инстанс Stream/BinaryReader и потом читать. А после прочтения этот инстанс с помощью using уйдет в небытие — лепота. Заметьте, что никто не мешает сохранить путь к файлу, заблокировать его для чтения-записи для других или отслеживать внешние изменения в нем. 4. Конечно же, двойное чтение. При том, ладно бы чтение одной конкретной записи (еще не страшно, удалится на очередной итерации GC), так нет, чтение ЦЕЛИКОВОГО файла в byte[], а потом разбор этого byte[]. Адский ужс. Я поясню: такой подход даже теоретически увеличивает объем потребляемой памяти в два размера загружаемого файла. Загрузили файл размером N*M в byte[], а потом создали массив struct Object размера N. А что если файл будет хотя бы 100мб? Будет потребление > 200 мб. А если бы была поддержка множественного открытия файлов (ее нет из-за static)? :) Я всегда говорю, что память не ресурс, т.к. сейчас у всех уже минимум 8 гб, но зачем городить адский ад, когда можно сделать лучше. 5. Массивы. Это отлично для каких-то вещей, но для нашего конкретного случая — не годится никуда. Хотя бы List. Это достаточно быстрая коллекция. Прикрепляю код, который на мой взгляд более удобен в плане поддержки и разработки. Так же он позволит быстро писать ViewModels для байндинга в WPF. Ключевые моменты: 1) Простая загрузка и сохранение: DynResourceCollection model = null; using (var stream = File.Open("dynamicobjects.data", FileMode.Open)) using (var reader = new BinaryReader(stream)) { model = reader.ReadModel<DynResourceCollection>(); } using (var stream = File.Open("dynamicobjects-written.data", FileMode.Create)) using (var writer = new BinaryWriter(stream)) { writer.WriteModel(model); } 2. Легкореализуемое подключение IoC — кому надо поймет. :) 3. Легкореализуемое проксирование к модели из ViewModel. 4. Полностью отдельный механизм чтения/записи данных, в котором можно реализовать поддержку версий файла или свои форматы данных: internal class DynResourceCollection : List<DynResource>, IBinaryModel { private const uint Magic = 'D' | 'I' << 8 | 'M' << 16 | 'P' << 24; // DIMP #region IBinaryModel Implementation void IBinaryModel.ReadInternal(BinaryReader reader, int version) { var inSign = reader.ReadUInt32(); if (inSign != Magic) throw new Exception("Unhandled type."); int count = reader.ReadInt32(); for (int i = 0; i < count; i++) { var model = reader.ReadModel<DynResource>(); Add(model); } } void IBinaryModel.WriteInternal(BinaryWriter writer, int version) { writer.Write(Magic); writer.Write(Count); for (int i = 0; i < Count; i++) { writer.WriteModel(this[i]); } } #endregion // IBinaryModel Implementation } internal class DynResource : IBinaryModel { private string _path; public uint Id { get; set; } public string Path { get { return _path; } set { _path = string.IsNullOrWhiteSpace(value) ? string.Empty : value; } } ... #region IBinaryModel Implementation void IBinaryModel.ReadInternal(BinaryReader reader, int version) { Id = reader.ReadUInt32(); var length = reader.ReadInt32(); Path = reader.ReadString(Encoding.GetEncoding("GBK"), length); } void IBinaryModel.WriteInternal(BinaryWriter writer, int version) { writer.Write(Id); var length = Encoding.GetEncoding("GBK").GetByteCount(Path); writer.Write(length); writer.Write(Path, Encoding.GetEncoding("GBK"), length); } #endregion // IBinaryModel Implementation } Да, кода стало чуть больше. Но он: быстрее, ест меньше памяти, в нем проще разобраться.
Ужасный, неживучий, стиль программирования. Объяснил в личку почему.
Испытал, красота, спасибо еще раз. Жаль не пакует в архив, а только вытаскивает честно? хотел сделать, но тупо некогда, а оплачивать никто не будет. давай мы скинемся х) краудфандинг?)))
Имена участников (разделяйте запятой).