Back to The tech awesomeness
Table of contents
Java chapters

The article for today.

At least one common trait among POST, GET, OPTIONS, DELETE, PUT, TRACE, CONNECT, PATCH http request methods is the letter 'T'.

The letter 'T' is the prefix for the following class name with 'Api' for 'application programming interface':


public interface TApi {
    /**
     * java documentation for the fee endpoint branch
     */
    interface Fee {
        /**
         * java documentation for the endpoints and each endpoint
         */
        String 
                GET_PURCHASE_FEE = "/purchase/{feeType}",
                GET_PURCHASE_ADMINISTRATIVE_FEE = "/purchase/administrative/{feeType}";
    }
    /**
     * java documentation for the login endpoint branch
     */
    interface Login {
        String
                GET_LOGIN_PAGE = "/login",
                GET_LOGOUT_PAGE = "/logout",
                GET_LOGIN_TOKEN = "/loginToken",
                POST_LOGIN_TOKEN_CHECK = "/loginTokenCheck";
    }
    /**
     * java documentation for the navigation endpoint branch
     */
    interface Navigation {
        String
                GET_START_PAGE = "/",
                GET_ANOTHER_SCRIPT = "/another_script.js";
    }
    /**
     * java documentation for the deprecated endpoints branch
     */
    @Deprecated
    interface Deprecation {
        /**
         * java documentation for each deprecated endpoint
         */
        @Deprecated
        String
                GET_PAGE_TIME_RECORDS = "/time_records",
                GET_DIALOG_TIME_RECORD_CREATE = "/create_time_record",
                POST_DATA_TIME_RECORD_CREATE = "/create_time_record";
    }
}

After publishing html java documentation, the Api map and the endpoints are available for navigation for client purposes.

In order to generate the html java documentation, if available, there is the following command:


    javadoc TApi.java

If it is not available, then the TApi interface's endpoints are available for internal usage:


    @PostMapping(value = TApi.Login.POST_LOGIN_TOKEN) @Transactional
    //...
    @GetMapping(value = TApi.Login.GET_LOGIN_PAGE)
    //...
    @Path(TApi.Login.POST_LOGIN_TOKEN)
    //..
    @Path(TApi.Login.GET_LOGIN_PAGE)
    //..
    @RequestMapping(value = TApi.Login.POST_LOGIN_TOKEN, method=RequestMethod.POST)
    //..
    @RequestMapping(value = TApi.Login.GET_LOGIN_PAGE, method=RequestMethod.GET)
    //..

When there is a case with more than one Api, it can be linked as follows:


    public interface PrivateTApi extends PublicTApi {//..

Оновлення від 2021-07-26.

The update as of 2021-07-26.


    if (No.such(object.getInternalProperties()) {
        moveToSandboxIfAvailable(object);
    } else { /*NOP.*/ }

Оновлення від 2021-07-27.

The update as of 2021-07-27.


    if (object.isOfType(acceptedClasses) && accesses(object, instance.isOfType(acceptedInstanceClasses)) && instance.contains(instance.getObjects(), MAX_OBJECTS)) {//which checks access. it is another type of duplication.
        check(object.getInternalProperties());//which about the same for instance. it is another type of duplication.
    } else { /*NOP.*/ }

    if (onChange(environment.getInternalProperties(), acceptedChangeEventClasses)) {//and there is an exposure of environment.getInternalProperties(); maybe it is a hot spot check.
        avoidOtherChecks(object, object.getInternalProperties());
    } else { /*NOP.*/ }

Оновлення від 2021-07-29.

The update as of 2021-07-29.

The quote from this article:


    The first part is the “Universal Object Model” (for lack of a better name).
    If the DOM is a programmable wrapper for HTML documents, the Universal Object Model is a programmable wrapper for web APIs.

: цитата з цієї статті article.

In sematic web decades ago it also captured this use case, because it supports a lot domain models and does not differentiate the programmable wrapper of a specific type, leaving as the implemetation as input parameter.

What is not clear from this article, probably it is not in its scope, whether a markup language is a type of web API, or a web API is a type of markup language or not, because some DSLs are via web API, some are via markup languages.

У семантичному веб більше ніж 120 місяців тому він теж захопив цей випадок використання, тому що він підтримує багато моделів галузів і не розрізняє програмуєму обгортку специфічного типа, залишаючи виконання як вхідний парамітер.

Що є невідомим з цієї статті, ймовірно це поза її межами, чи мова розмітки є типом веб ППІ, чи веб ППІ є типом мови розмітки чи ні, тому що деякі ДСМ є за допомогою веб ППІ, деякі є за допомогою мов розмітки.

Оновлення від 2021-08-10.

The update as of 2021-08-10.


    if (isRemote(resourcePunkt)) {
        /*NOP.*/
    } else if (isNonRemote(resourcePunkt)) {
        if (isRequirementAvailable(resourcePunkt.getSomeStatuses())) {
            if (isRequirementAvailable(resourcePunkt.getSomeStatusesFor(otherResourcePunkts.iterator().getSomeStatuses()))) {
                /*NOP.*/
            } else {
                /*NOP.*/
            }
        } else {
            /*NOP.*/
        }
    } else {
        /*NOP.*/
    }

    if (isOutOfStatusRunnables) {
        minimizeOrOptimizeOrSelfRunOrTransferToStatusayaRunnable(this);
    } else {
        /*NOP.*/
    }

    якщо (зовнішнійБігаємий.зДалеку()) {
        якщо (зовнішнійБігаємий.зДалеку().одноразово()) {
            /*НОП.*/
        } якщо (зовнішнійБігаємий.зДалеку().періодично()) {
            /*НОП.*/
        } інакше {
            /*НОП.*/
        }
    } інакше {
        /*НОП.*/
    }

Оновлення від 2021-08-14.

The update as of 2021-08-14.


    якщо (зеоб'єкт.відмовляєПриймання(іншогоРесурсПункта, суркумстанції)) //але пропагує і надає 2, 3, або навіть 4 інших об'єкта до цього рядка то це чи ще одна
    дублікація
    в зеоб'єкті чи не валідна логіка відмовляння приймання чи ресурсПункт потрапив туди як інформаційний вірус бо невідома частина до цього рядка чи протиріччя в суркумстанціях чи присутньо дуже багато пластикових обгорток до цього рядка...

Tппі.

Оновлення від 2021-08-17.

The update as of 2021-08-17.

Гіперпосилання має текстову форму, однак його можна закодувати в ШРкод.

ШРкод має візуальну видиму форму, однак його можна закодувати в гіпертекстове посилання.

Якщо ви щось чули про звукову форму схожу на них і до цього маєте гіперпосилання: +380661907243; тоді +380 63 553 1264; або +380 63 553 1264; тоді +380661907243; Global System for Mobile Communications(GSM).

Про інтерфейс для них це теж наприклад тут.

Оновлення від 2021-08-26.

The update as of 2021-08-26.


уЦикліДля(Хс: де х) {
    якщо (ресурсПункт.повертаєтьсяДо(у)) {
        якщо(існуєДеякаВимога(х)) {
            змінна з = іншийРесурсПункт.рахувать(x.отриматьРозмір());
            якщо (з <= ресурсПункт.отриматьРозмірПовертанняДо(у).з(x)) {
                //видати щ.
                //..
            } інакше {
                //..
            }
        } інакше {
            //..
        }
    } інакше {
        /*НОП.*/
        //..
    }
}

Оновлення від 2021-08-26.

The update as of 2021-08-26.

Адже кожне ППІ може мати у наявності 2 і більше версій як то ../ппі/в1 і ../ппі/в2, є непоганим можливо зазначити наявність його так званих ламаючих оновлень прямо в ньому якщо не в його документації, наприклад, ../лоппі/в1 або ../нлоппі/в2. Тому що немає такої наявності за замовчуванням, однак іноді є згадки в деяких документаціях.

As long as each API can contain 2 and more version as in ../api/v1 і ../api/v2, it is possible to mention its breaking changes option inside of it if not in its documentation, for example, ../bhapi/v1 або ../nbcapi/v2. Because there is no such option by default in some APIs, however sometimes there are mentions in some of documentations.

В джава java коді код ППІ і його документація бувають в одному місці у файлі рівнем коду джерела, який може бути перетворений наприклад в домументацію ГТРМ за допомогою сторонньої програми або в складений файл для виконання теж зі збереженням документації. У веб ППІ внаслідок того що у ГЕТ запита обмеження і деякі параметри можуть бути як в ПОСТ запитах тобто не видимими в ППіНТВСуІ без спеціальних додаткових засобів документація яких тоді має бути в якомусь додатковому місці десь ще.

Це про відмінність веб ППІ і джава java ППІ, яка показує перевагу формата, який має можливість в собі тримати як код так і його документацію якщо вона присутня.

In java code the API and its documentation can be in one place in one file at the level of source code, which can be transformable for example in HTML documentation with a help of another program or into executable file after compilation also with documentation persistence. In web API because of in GET request there is a limitation and some patemeter can be hidden as in POST requests so as not visible during execution in browser without special additional tools the documentation of which has to be in some additional place then.

It is about difference between web API and Java API, which shows the advantage of the format, which has an ability in itself to keep both code and its documentation if it is available.

Недоліком тоді є те що джава ппі не має прихованих параметрів як у веб ппі ПОСТ запитів. Тобто рівнем коду джерела всі параметри видимі. Рівнем виконання всі параметри невидимі допоки код існує, якщо не використовувати додаткових засобів.

The disadvantage then is java API does not contain hidden parameters as in web API POST requests. So that at the level of the source code all parameters are visible until code is available. At the level of execution all parameters are hidden, unless to use additional tools.

Так що в веб ппі така можливість як параметрова видимість змінна вами завдяки дизайну кода, в той час як в джава Java ппі така можливість змінна вами файлом дизайном, так що чи це відкритий чи зачинений код джерела. І частковою відсутністю документації в складних випадках.

So that in web API such feature as parameter visibility is changeable by you by code design, in java API such feature is changeable by you by file design, so that closed or open source. And by the partial absence of documentation in complex cases.

Оновлення від 2021-08-27.

The update as of 2021-08-27.


    switch (file) {                 перемикнутиДля(файла) {
        case CLOSED_SOURCE:             випадок ЗАЧИНЕНО_КОДОВИЙ:
            //..                            //..
        case OPEN_SOURCE:               випадок ВІДЧИНЕНО_КОДОВИЙ:
            //..                            //..
        default:                        заЗамовчуванням:
            //..                            //..
    }                               }
    switch (api) {                  перемикнутиДля(ппі) {
        case CLOSED_SOURCE:             випадок ЗАЧИНЕНО_КОДОВИЙ:
            //..                            //..
        case OPEN_SOURCE:               випадок ВІДЧИНЕНО_КОДОВИЙ:
            //..                            //..
        default:                        заЗамовчуванням:
            //..                            //..
    }                               }

Оновлення від 2021-09-03.

The update as of 2021-09-03.


    interface IDL {/**/}

    interface OpenAPISpecification extends IDL {/**/}

    //there are others to extend from IDL.

    class RAML implemets OpenAPISpecification {
        YAML HRDSerL;//as a format. only one. not diverse in formats.
        //...
    }

Оновлення від 2021-09-06.

The update as of 2021-09-06.


    from(s1).transfer(s1.getTransferrableObjectInstance()).to(s2).evenIf(s1.getPreferences()).on(moment);//to check whether and when this line known to s1, s2 and whether it should be in notification or elsewhere beforehand and whether only for s1 and s2.

    від(с1).передати(с1.отриматиПередаваємийЗразок()).до(с2).навітьЯкщо(c1.отриматиВподобання()).у(момент);//перевірити чи і коли цей рядок відомий для с1, с2 і чи він мав бути в нагадуванні чи деінде зазделегідь і чи лише для с1 і с2.

    //Оновлення від 2021-09-09.
    //The update as of 2021-09-09.
    //так що такий випадок щоб його уминути це точно щонайменш щодо нескасовуємого оголошення зазделегідь щодо режиму метода в якому він знаходиться чи користувацької преференції.
    //so that such case to avoid it is about at least as the previous undeniable anouncement of method mode in which the case is or as a user preference.
    //Кінець оновлення від 2021-09-09.
    //The end of update as of 2021-09-09.
    

Оновлення від 2021-09-08.

The update as of 2021-09-08.

Поки ХЕйТОАС HATEOAS надає орієнтування по ППІ, ППІ кінцева точка яка надає створення інших кінцевих точок із зчепленням до якогось методу, функції, процедури, теж є кінцевою.

While HATEOAS provides navigation through API, API endpoint which provides creation of other endpoints with linking to some other method, procedure, function is also an endpoint.

Оновлення від 2021-10-16.

The update as of 2021-10-16.

Більшість ППІ специфічно налаштовані. Навіть 2 схожих ППІ можуть мати в наявності різну кількість обов'язкових і необов'язкових параметрів або їх різні назви. І це впливає в подальшому на міграцію або сповільнює доєднання до них. Іншими словами так що навіть схожі ППІ для послуг мають в наявності різні межі. У коді це має виобрадення наприклад в стало незмінних класах для того ж самого методу для різних ППІ.

Most APIs are customized. Even 2 similar API can have different amount of required and optional parameters or different names for those similar parameters. And it later influences the migration between different APIs or slows down the connecting to them. In other words so that even similar APIs for services have different scopes. In code it has a representation for example of static classes for the same functions for different APIs.

Оновлення від 2021-11-26.

The update as of 2021-11-26.

If XHTML includes extensibility property as in XML, then XHTML is more extensible than HTML. However its dependencies are not only the standard and previous ones but also its implementations.

And then similar situation about increasing requests for funcational features there is not excluded and in following interfaces onwards due to that one.


    
    interface GML {/*...*/}

    interface SGML extends GML{/*...*/}
    
    interface XML extends SGML {/*...*/}

    interface HTML extends SGML {/*...*/}

    interface XHTML extends XML, HTML {/*...*/}

Якщо XHTML і має в наявності властивість розширюємості як в XML, тоді XHTML більш розширюваний ніж HTML. Однак його залежностями є не лише стандарт і попередні а й також його виконання.

Й тоді та сама ситуація про зростаючі запити щодо функціональних особливостей там не виключена і в наступних інтерфейсах в подальшому з за того.


    
    інтерфейс GML {/*...*/}

    інтерфейс SGML розширює GML{/*...*/}
    
    інтерфейс XML розширює SGML {/*...*/}

    інтерфейс HTML розширює SGML {/*...*/}

    інтерфейс XHTML розширює XML, HTML {/*...*/}

Якщо подібні компоненталі були перевиконані раз за разом без перевикористання в HTML за допомогою наприклад JavaScript й за допомогою деяких фреймворкових програмних каркасів надаючі найбільші можливості для тестування й надання різноманітності, це можливо інакше у XHTML якщо якісь купи ПЗ використовують його те саме якесь розширення.

If some similar componentals were reimplemented one after another without reuse in HTML with a help of for example JavaScript and with a help of some frameworks providing largest possibilities for testing and providing diversity, it is possible differently in XHTML if some software heaps use its some same extention.

Що з іншої перспективи відчиняє можливість для ситуацій з виделками і портуванням і одночасних оновлень від 2021-11-20 у якомусь ПЗ в XHTML, яка в HTML була більшістю відсутня ймовірно переважно з за складності їх виконання замість цього неодночасними оновленнями чи у різних версіях.

Which from other perspective opens the possibility for the situations with forks and ports and syncronized updates as of 2021-11-20 in some software in XHTML, which in HTML was majorily ansent possibly mostly because of complexity for its implementation being for example asynchronous or in different versions.

Оновлення від 2021-11-27.

The update as of 2021-11-27.

Ці 3 залежності і деяка ППіНТВСуІ, в якій лише як 1 частина від 2020-07-30 виконання стандарту, можливо формують інший стос виконання.

These 3 dependencies and the browser, in which implemetation of some standard is only as 1 part as of 2020-07-30, possibly form another runtime stack.

Однак я і не знайшов в них класа для ЧасуВиконання2 це не виключає їх наявності адже вони запускаються з більш менш схожими особливостями щонайменш 2 способами включаючи Selenium. Тому вони повторно збираємі до купи. А тож мають властивість повторної збираємості до купи.

Eventhough I did find in them a class for Runtime2 it is not excluding their presence as long as they are startable with more or less similar features at least by 2 approaches including Selenium. That is why they are resemblive. And has the resemblivity property.

Оновлення від 2021-12-30.

The update as of 2021-12-30.

ХЕйТОАС чи іншим, ВИСТ чи іншим але від них як більш точних методів про те що деякі веб запити залежні від попередніх а деякі ні.

By HATEOAS or other, by REST or other but from them as more precise approaches about that some requests are dependent on previous requests and some ones are not.

Оновлення від 2022-01-10.

The update as of 2022-01-10.

Існує специфічний приклад використання у якому більшість ППіНТВСуІ не обов'язкові, це якщо гіт клонування та деякі інщі та імпорт залежностей у гредл та подібні є у процесі для виконанні суто у програмному коді.

There is a specific use case in which most browsers are not required, it is if git clone and some others and import of dependencies to gradle and alike are in process for implementations only inside program code.

Оновлення від 2022-03-25.

The update as of 2022-03-25.

Існує така веб послуга чи веб сервіс: hellogreg.github.io/woff2base. Вона чи вн перетворює файли одного формата у інший а саме файл шрифта у Base64 рядоку. Таким чином він чи вна має деякий ППІ для того. Можливо принаймні свій власний зачинений. Але адже існує багато мов програмування також можливі такі схожі рішення за допомогою ППІ з використанням тих мов програмування. Тож деякий тип чи модель наприклад для пошукача ППІ перетворюється до такої таблички: назва ППІ; вебПослугиЧиМовиПрограмуванняППІЧиІнше; необов'язкова назва застосовної мови програмування; API URL; ППІ УРР; послідовний доданий зразок якщо подібних дублікатів ППІ більше одного версія.

There is a such web service: hellogreg.github.io/woff2base. It converts files of one format into another one particularly a font file into Base64 string. Thus it has some API for that one. Maybe at least a private one. But as long as there are many programming languages there are also possible such similar solutions in APIs of those programming languages. Thus some type or a model for example for an API finder is converted to such table: API name; WebServiceOrPLServiceAPIorOther; optional PL name; API URL; sequencial sample; version.

Оновлення від 2022-05-05.

The update as of 2022-05-05.

org.eclipse.jetty.util.ssl.SslContextFactory має метод у деякій його версії setEndpointIdentificationAlgorithm. Якщо ж помітити то у проектах ППІ з'являються по-різному. Однак серед різноманіття ППІ я досі не зустрічав такої ознаки яка б як для того метода визначала б для кого призначений той ППІ. Тобто це оновлення про те як визначається ППІ яке включає такі endpoints або ж тобто УРР тобто для якої групи воно переважно призначено якщо для якоїсь. І про цей описаний метод це коли про призначення ППІ оголошує саме ППІ за допомогою розробника чи розробниці через таку ознаку з якимось її значенням. Інакше у групі ПЗ невідомо як якесь ППІ потрапило у нього тому що навіть відсутня наприклад така ознака.

Якщо це пов'язати з табличкою як у Eliminating Technical debt. Видалення технічного боргу. від 2021-07-27 то наразі без такої ознаки але з такою кількістю таких ППІ без такої ознаки окрім припускаємої нагадуватиме як нібито було у проміжок часу до того як з'явилися реп'яшки чи тоукєни щодо таких ППІ без такої ознаки.

Оновлення від 2022-06-11.

The update as of 2022-06-11.

ППІ чи то протокольне чи то мовою програмування включає в собі їх обмеження. Але на відміну від псевдокода воно компіляційно чи інакше складається і не вимагає додаткового перетворення.

Оновлення від 2022-07-12.

The update as of 2022-07-12.

http://thetechawesomeness.ideasmatter.info/internet-and-exinternet-and-internetless.html від 2022-04-07 про в'язки і надв'язки і підв'язки. Серед тих веб сервісів і веб послуг які були знайдені і у яких абстрагували над ними вони поділяються принаймні на такі у яких багато однакових модулів різними мовами програмування для 1 ППІ як то у getkong і такі у яких жорстка прив'язка модулів до однієї мови програмування або до веб ППІ для 1 ППІ і особливість легкої суміші з іншими ППІ серед них як то у IFTTT. Тобто у перших легша інтеграція вшир для дістріб'ютіексчейнджі з такими ППІ, у інших вглиб між собою для дістріб'ютіексчейнджі з такими ППІ.