Pull to refresh

Iterator, ArrayAccess, Countable: Объект как массив

PHP *

0. Intro.


В стандартной поставке php имеются 2 интересных интерфейса, позволяющие значительно изменять поведение объектов в языке.
Это Iterator и ArrayAccess. Первый позволяет итерировать объект через такие конструкции each, foreach, for. Второй же, в свою очередь, позволяет обращаться к объекту, как к массиву применяя привычное $array[] = 'newItem'. Соответственно, для полноценной эмуляции массива, объект обязан заимплементить оба интерфейса.
Читать дальше →
Total votes 74: ↑62 and ↓12 +50
Views 29K
Comments 39

JTable и Serializable или таблицы в Java и танцы с бубном при сохранении объектов в файлы

Java *
Sandbox

Введение


Так получилось, что как дизайнеру, мне необходим простор для творчества при реализации любых зачач в написании программ. Давно я положил глаз на такую платформу как Java, так-как всегда мечтал о кроссплатформенном программном обеспечении. И вот недавно, я решил освоить такой прекрассный компонент в Java, как JTable, ну и по той причине, что всегда любил использовать таблицы в своих программах.

В общем, я поставил перед собой не сложную задачу — создать таблицу, которую мог бы сохранять в файл как объект и паралельно отслеживать введенные пользователем данные подсвечивая ошибки и упрощая общение с таблицей моей программы путем подсвечивания наиболее важных элементов таблицы. Так-как я сторонник программирования по принципу пошаговой отладки при написании кода, наличие готовых кусков стабильного кода в сети Интернет, было для меня очень важным… Но… После тщательных поисков, экспериментально было установлено
Читать дальше →
Total votes 20: ↑14 and ↓6 +8
Views 26K
Comments 21

Сравнение Serializable и Parcelable. В секундах

Development for Android *
В этом посте будут цифры, которые так хотел узнать пользователь gubber, публикуя статью-вопрос Serializable или Parcelable?
График тестов выглядит следующим образом

Читать дальше →
Total votes 67: ↑48 and ↓19 +29
Views 25K
Comments 19

Singleton serialization или сад камней

C# *
Sandbox
image

В процессе разработки захотелось сериализовать синглтон, но с сохранением и восстановлением значений его полей. На первый взгляд нетрудный процесс обернулся увлекательным путешествием в сад камней и булыжников: от получения двух синглтонов до отсутствия сериализации полей.
Читать дальше →
Total votes 13: ↑8 and ↓5 +3
Views 18K
Comments 6

Бинарная сериализация в Unity 3D/Visual Studio Application

.NET *C# *Unity3D *
Sandbox
Tutorial
В процессе разработки плагина для Unity 3D понадобилось сделать хранение относительно большого количества данных. В моем случае это хранение данных нодов для визуального программирования (так же применим и к реализации сохранения игры). Способ хранения должен отвечать заданным требованиям:

  • Высокая скорость обработки;
  • Высокий уровень сжатия данных;
  • Возможность хранения своих классов и структур;
  • Чтение\запись в Unity, а так же в отдельной программе (Visual Studio Application, C#);
  • Работать со старыми версиями сохраненных данных (при изменении структуры);
  • Не должен требовать наличие дополнительно установленных пакетов и др. ПО у пользователей;
  • Работать на мобильных устройствах;
  • Язык: C#.

В результате я остановился на двоичной сериализации. Данный способ отвечает всем заданным требованиям, но лишает возможности просмотра и редактирования уже сериализованных данных в текстовом редакторе. Но это не проблема, так как для этого предназначена программа для редактирования.
Читать дальше
Total votes 15: ↑11 and ↓4 +7
Views 19K
Comments 8

Уровни изоляции транзакций с примерами на PostgreSQL

Website development *PostgreSQL *SQL *

Вступление


В стандарте SQL описывается четыре уровня изоляции транзакций — Read uncommited (Чтение незафиксированных данных), Read committed (Чтение зафиксированных данных), Repeatable read (Повторяемое чтение) и Serializable (Сериализуемость). В данной статье будет рассмотрен жизненный цикл четырёх параллельно выполняющихся транзакций с уровнями изоляции Read committed и Serializable.


Для уровня изоляции Read committed допустимы следующие особые условия чтения данных:


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


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


Что же касается Serializable, то данный уровень изоляции самый строгий, и не имеет феноменов чтения данных.

Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Views 139K
Comments 18

Сериализация данных: тест производительности и описание применения

Java *Kotlin *
Sandbox

Сериализация (Serialize, в последующем «сохранение») – это процесс сохранения данных объекта во внешнем хранилище.
Эта операция работает в паре с обратной – восстановлением данных, называемой десереализацией (Deserealize, в последующем «восстановление»).


Операции сохранения и восстановления данных применяются очень часто. В классических языках программирования готовых механизмов для сохранения и восстановления данных объектов нет и, при возникновении такой необходимости, приходится создавать их самостоятельно.


В Java такие готовые механизмы существуют и, даже, в количестве более одного. Давайте разберемся, какие механизмы есть и какие возможности они предоставляют для программ на Kotlin.


Само понятие сериализации никак не привязано к формату данных, в который будут сохранены данные, поэтому вне зависимости от того, какой результат будет получен – бинарный файл с собственной структурой, формат XML, JSON или даже текстовый файл – все это будет сериализацией.


Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Views 21K
Comments 15

Сериализация в Java. Не все так просто

Programming *Java *ООP *Data storage *
Sandbox


Сериализация (Serialization) — это процесс, который переводит объект в последовательность байтов, по которой затем его можно полностью восстановить. Зачем это нужно?
Читать дальше →
Total votes 11: ↑7 and ↓4 +3
Views 99K
Comments 16

Чиним сериализацию объектов в Kotlin раз и навсегда

Badoo corporate blog Java *Development of mobile applications *Development for Android *Kotlin *


Недавно я наткнулся на статью о проблеме c Java-сериализацией объектов в Kotlin. Автор предложил решать её добавлением метода readResolve к каждому объекту, который наследуется от java.io.Serializable.


Этот способ выглядит абсолютно правильным, однако его поддержка может оказаться слишком проблематичной. С учетом того, что в нашем проекте эта проблема возникала только при использовании объектов внутри Bundle, мы решили использовать проверку через is для каждой ветки when-выражений в случае sealed классов.


Тем не менее, размышляя об этом, я никак не мог понять, почему Kotlin не генерирует readResolve в компиляторе, поддерживая singleton-свойства объектов. Мне казалось, что это работа для инструментов, а не для человека. Но раз Kotlin не добавляет эту функцию сам, мы можем ему помочь! Этим мы сейчас и займёмся.

Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Views 5.2K
Comments 7

API, ради которых наконец-то стоит обновиться с Java 8. Часть 3

Java *

Какие есть причины переходить на новые версии Java? Кто-то это сделает из-за новых языковых возможностей вроде выражений switch, блоков текста или записей. Кому-то понадобятся новые интересные возможности вроде модулей или низкопаузных сборщиков мусора. Кто-то это сделает просто из-за того, что обновив версию Java, их программа станет быстрее и будет есть меньше памяти. Но есть ещё одна, не менее важная причина. Это новые API, которые позволят писать меньше кода и избежать траты времени на поиск нужной функциональности во внешних библиотеках. А в некоторых случаях сделают ваш код быстрее.


В предыдущих двух частях мы уже рассмотрели по 10 новых API, которые появились в Java 9 и более поздних версиях (часть 1, часть 2). Сегодня мы рассмотрим ещё 10.


Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Views 12K
Comments 27