Метка «class»

в 1:54, , рубрики: Песочница, метки: , ,

Перелопатил много движков и отдельных классов и все ради того чтоб узнать как люди решали проблему парсера BB кодов и толкового ничего не нашел чтоб меня устраивало.
Первая проблема парсера состоит в том что он медленный.
Вторая проблема плохо работает с рекурсией.
Третья проблема это добавление новых BB кодов.
Проблем еще много но это основные.

Я попробовал просто разделить текст на составляющие и поочередно соединить весть текст.
Читать полностью »

Чем интересен данный класс и для чего он подойдет

Данный класс предназначен для работы с API VK. Особенность данного класса является авторизация через Android приложение, что позволяет использовать все методы, предоставленные для работы. Класс писался лично мной, как для само развития, так и в помощь начинающим разработчикам. Согласитесь, ведь намного удобней авторизироваться ВКонтакте потратив на это три строки кода, чем двадцать?

Что потребуется для стабильной работы на хостинге?

  • Установленная библиотека Curl
  • Поддержка самого php

Читать полностью »

Эта статья, надеюсь, будет полезна не только тем, кто хочет освоить Smalltalk, но и тем, кто желает получше разобраться в проблемах построения объектных систем. В Smalltalk-е классы являются полноценными объектами, и то, как это реализовано, является отличным примером построения развитой системы на основе нескольких простых принципов без излишнего усложнения.

(Впрочем, и связь с недавно вышедшей статьей Метаклассы в Objective-C отрицать не буду.)
Читать полностью »

В этой заметке я хотел бы привести краткое описание методов регулирования доступа к атрибутам класса в питоне с помощью декораторов и с помощью присвоения специальным образом имен атрибутам в соответсвии с хорошим стилем программирования, описанным в PEP 8 . Статья написана на основе обсуждений данной темы на StackOverflow.com, нескольких мануалов и личного опыта автора.

Занимаясь написанием программ, выполняющие научные расчеты, я перешел с c++ на питон, чтобы использовать всю мощь библиотек, к которым относятся numpy, scipy, matplotlib, pyquante и прочие, распространяющиеся под свободной лицензией и находящихся в избытке на github. Однако, на начальном этапе такого перехода у меня возник дискомфорт, связанный с отсутствием таких привычных в с++ модификаторов доступа, как privat, public и protected, а также методов get() и set(), что и побудило меня написать эту заметку. На StackOverflow первое, что бросается в глаза при обсуждении отсутствия модификаторов доступа в питоне, — это всеобщее согласие с большой долей ответственности разработчика при написании кода, которая побуждает его соблюдать хороший стиль программирования, описанный в PEP 8 . Проблема заключается в том, что в питоне всегда можно получить доступ к любому атрибуту любого класса, однако, согласно хорошему стилю, такой доступ пользователями библиотеки классов должен быть осуществлен не прямо, а с помощью некоторого интерфейса и только там, где это нужно и предусмотрено разработчиком.

Рассмотрим класс, содержащий атрибут attr:

class MyClass:
    def __init__(self):
        self.attr = 0

Существует очевидная возможность доступа к атрибуту напрямую после создания объекта класса:

a=Class()
a.attr

Этим способом обращения лучше не злоупотреблять. Для того, чтобы имитировать наличие модификатора доступа privat, можно использовать подчеркивание в начале всех имен атрибутов:

class MyClass:
    def __init__(self):
        self._attr = 0

Конечно, в этом случае к атрибуту можно обратиться извне класса как:

a._attr

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

Если все же есть необходимость предоставить пользователю доступ к атрибуту данного класса, лучше использовать декоратор @property. Например:

class MyClass:
    def __init__(self):
        self.attr = 0

    @property
    def attr(self):
        return self._attr

Читать полностью »

Нужны ли в JavaScript классы?JavaScript принято считать прототип-ориентированным языком программирования. Но, как ни странно, этим подходом практически никто не пользуется: большинство популярных JS-фреймворков явно или неявно оперируют классами.
В этой статье я хочу рассказать об альтернативном способе программирования на JavaScript, без использования классов и конструкторов — чистым прототип-ориентированным ООП и особенностях его реализации на ECMA Script 5.Читать полностью »

Привет всем. JavaScript это весьма гибкий язык, но так получилось что классов в этом языке нет. Да, в ECMAScript 6 появятся классы, но еще не скоро наступят те времена, когда большинство пользователей будут использовать браузер с этой версией языка. А пока программисты на JavaScript используют различные фреймворки (MooTools, AtomJS и другие) для создания «классов». Прочитав эту статью вы узнаете: как устроены выше упомянутые фреймворки, и как самим на чистом JavaScript можно реализовать классы несколькими способами.
Читать полностью »

Играясь с синглтонами-статикой-константами во флексе, вот на что напоролся:

Читать полностью »

в 9:17, , рубрики: class, java, метки: ,

image
Здравствуйте, читатели.

Понадобилось мне однажды внести небольшое изменение в программу (пожелавшую остаться неизвестной), чтобы избавить её от досадного глюка. Совсем копеечное, поменять порядок вызова функций. Перед этим я довольно долго переписывался с авторами, детально описал им причины возникновения ошибки и способы воспроизведения, даже видео присылал. Но то ли английский мой настолько плох, что не понимали они, то ли просто поленились (странный порядок вызова функций провоцировал появление ошибок в подключаемых модулях. Это не наша проблема, это проблема авторов тех модулей).

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

Декомпилятор мне не помощник, 1000 с хвостиком файлов с убийственной архитектурой я не потяну. Ну что же, — подумал я, — мы пойдём другим путём. Есть несколько софтин, редактирующих классы. Есть небольшой опыт ковыряния кода. Есть описания инструкций. Казалось бы, в чём проблема?

Ан нет. Программа скомпилирована под 7 версию java. Редакторы, которые я нашёл, в последний раз обновилялись несколько лет назад, но до сих пор исправно работали. А в этот раз я получил неработающий класс и горстку бесполезных сообщений об ошибках в крашрепорте одной из софтин. Выяснилось, что, кроме всего прочего, Jasmin код, полученный при помощи Javap, компилирует некорректно.

Что нам стоит дом построить? Я решил не мелочиться и написать свой редактор. Или хотя бы парсер class-файлов, о процессе создания которого и написана эта статья.

Осторожно, под катом могут быть велосипеды с квадратными колёсами.
Читать полностью »

Данная статья не является продолжением повествования об обёртках C++ API. Никаких обёрток сегодня не будет. Хотя по логике это третья часть данного повествования.
Сегодня будет море крови, расчленение существующих типов и магическое превращение их в привычные аналоги в другом языке.
Речь не пойдёт о существующей конвертации между строками, нет, мы напишем свои конвертеры.
Мы превратим привычный datetime.datetime питона в boost::posix_time::ptime библиотеки Boost и обратно, да чёрт с ним, мы вообще всю библиотеку datetime превратим в бустовые типы! А чтобы не было скучно, принесём в жертву встроенный класс массива байт Python 3.x, для него как раз ещё нет конвертера в Boost.Python, а потом зверски используем конвертацию массива байт в новом конвертере питоновского uuid.UUID в boost::uuids::uuid. Да, конвертер можно использовать в конвертере!
Жаждешь крови, Колизей?!..
Читать полностью »

Данная статья является продолжением первой части.
Продолжаем мучить Boost.Python. В этот раз настала очередь класса, который нельзя ни создать, ни скопировать.
Обернём обычные обычную сишную структуру с необычным конструктором.
И поработаем с возвращением ссылки на поле объекта C++, так чтобы сборщик мусора Python его не удалил ненароком. Ну и наоборот, сделаем альтернативный вариант, чтобы Python прибрал мусор после удаления того, что ему отдали на хранение.
Поехали…
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js