Gábor Lipták

Biography

Hands-on software architect working as an application architect, integration architect, and enterprise architect in various industries. Experienced in Microservices Architectures, Service-Based Architectures, and Service-Oriented Architectures. Conference speaker and trainer. Keeping coding skills sharp as an open source enthusiast.

Interests

  • Strategic Consulting
  • Solution Architecture
  • Data Science
  • Enterprise Mobile Solutions

Education

  • MEng specializing in Flexible Manufacturing Systems

    Moscow State Technological University

Projects

JAllele

JAllele is a Java mutation testing tool.

Go - A Perspective

Presentation on Go features anchoring them onto other languages like C, Java, Python, etc.

Contact

Recent Posts

Github Add/Update/Delete File(s) on Branch with GraphQL

In input contents is base64 encoded and expectedHeadOid must match with last commit on branch referenced and operation will fails on mismatch: { "input": { "branch": { "repositoryNameWithOwner": "gliptak/githubapitest1", "branchName": "my_branch" }, "message": { "headline": "Hello from GraphQL!" }, "fileChanges": { "additions": [ { "path": "graphql.txt", "contents": "SGVsbG8gZnJvbSBHcmFwaFFMIQo=" } ], "deletions": [ { "path": "README.md" } ] }, "expectedHeadOid": "74512c01ecaec77e38497d448d391065c07ce973" } } Mutation below updates branch with fileChanges listed: mutation ($input: CreateCommitOnBranchInput!

Github Create Branch with GraphQL

First gather some context: { repository(owner: "gliptak", name: "githubapitest1") { id defaultBranchRef { name target { oid } } } } Substitute repositoryId and oid from above and use the name of the to be created branch: { "input": { "clientMutationId": "1234", "name": "refs/heads/<BRANCH_NAME>", "oid": "<OID>", "repositoryId": "<REPOSITORY_ID" } } mutation AddBranch($input: CreateRefInput!) { createRef(input: $input) { ref { name } clientMutationId } } Success returns { "data": { "createRef": { "ref": { "name": "my_branch" }, "clientMutationId": "1234" } } } And in case of error, relevant details are returned

Github List Files Recursively with GraphQL

At this point GraphQL doesn’t seem to provide the right constructs to list files folders of unconstrained depth. Instead, users will make multiple calls into the API. So let’s get started: { "owner": "gliptak", "name": "aws-cdk-python", "rev": "" } query DefaultBranch($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { name defaultBranchRef { name } } } returns { "data": { "repository": { "name": "aws-cdk-python", "defaultBranchRef": { "name": "master" } } } } Subtitute the default branch from above into the query variables with : appended (master: for our example or other syntax HEAD:) and run:

Github List Repositories Paginated with GraphQL

One of the Github GraphQL operations supporting pagination is searching/listing repositories. Below queries utilize query variables running in GitHub’s GraphQL Explorer. { "query": "org:gliptak is:all", "pageSzie": 2, "after": "" } Below setup has 2 for pagination size for demonstration purposes, larger window to be used in real queries. The initial query: query ListRepos($query: String!, $pageSize: Int!) { search(query: $query, type: REPOSITORY, first: $pageSize) { edges { node { ... on Repository { name defaultBranchRef { name } } } } pageInfo { startCursor endCursor hasNextPage } } } returns repo details and cursor values:

Docker Compose Tailing of Log Files

Docker Compose Logs docker compose logs aggregates stdout of containers started with no out-of-the-box capability for aggregating additional logs generated on container filesystems. Implementing sidecar allows tailing logs generated on container volumes. docker-compose.yaml services: counter: image: busybox command: | /bin/sh -c 'i=0; while true; do echo "$$(date) WARN $$i" >> /var/log/1.log; echo "$$(date) INFO $$i" >> /var/log/2.log; i=$$((i+1)); sleep 5; done' volumes: - log-volume:/var/log counter-log: image: busybox command: | /bin/sh -c 'tail -n+1 -F /var/log/*.