- Create your realm / client
- Inside client configuration go to "Mappers"
- Click on "Create"
- Name it "hasura"
- Choose Mapper Type "Script Mapper"
- Add following script to demonstrate how it works
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { BitBuilder, BitReader, Cell, beginCell } from "@ton/ton"; | |
| const OFFCHAIN_CONTENT_PREFIX = 0x01; | |
| export function encodeOffChainContent(content: string) { | |
| let data = Buffer.from(content); | |
| let offChainPrefix = Buffer.from([OFFCHAIN_CONTENT_PREFIX]); | |
| data = Buffer.concat([offChainPrefix, data]); | |
| return makeSnakeCell(data); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { useCloudStorage } from "@tma.js/sdk-react" | |
| import { useEffect, useState } from "react" | |
| type OP = 'addItem' | 'getAll' | 'purge' | |
| const createKeys = (length: number, idxKey: Function): string[] => Array.from({ length: length }).map((_, idx: number) => idxKey(idx)) | |
| export const useCloudDB = (tableName: string, threshold: number) => { | |
| const cs = useCloudStorage() | |
| const [busy, setBusy] = useState(false) | |
| const [threshReached, setThreshReached] = useState(false) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import os | |
| import json | |
| import uasyncio as asyncio | |
| class Store: | |
| is_loading = False | |
| is_saving_scheduled = False | |
| data = None |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import uasyncio as asyncio | |
| from machine import ADC | |
| import time | |
| class Levels: | |
| _last_level = None | |
| debounce_ms = 200 | |
| none_level = 65000 | |
| callbacks = {} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { useState } from "react" | |
| import { useQuery } from "blitz" | |
| const useLazyQuery = (resolver, inputArg, options = {}) => { | |
| const [enabled, setEnabled] = useState(false) | |
| const [result, extras] = useQuery(resolver, inputArg, { | |
| ...options, | |
| enabled, | |
| suspense: false, | |
| onSettled: () => setEnabled(false), |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| export default class MailgunClient { | |
| apiKey: string; | |
| domain: string; | |
| defaults?: { | |
| from?: string; | |
| subject?: string; | |
| }; | |
| constructor(apiKey: string, domain: string, defaults?: Record<string, any>) { | |
| this.apiKey = apiKey; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| defmodule Karta.Web.ReactPlug do | |
| import Plug.Conn | |
| def init(options), do: options | |
| def call(conn, _opts) do | |
| conn | |
| |> put_resp_header("content-type", "text/html; charset=utf-8") | |
| |> Plug.Conn.send_file(200, Application.app_dir(:karta_web, "priv/static/index.html")) | |
| end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Requires Erlang/OTP 19.0. Invoke as: | |
| # | |
| # iex --erl "-proto_dist Elixir.Epmdless -start_epmd false -epmd_module Elixir.Epmdless_epmd_client" --name frobozz3 | |
| # A module containing the function that determines the port number | |
| # based on a node name. | |
| defmodule Epmdless do | |
| def dist_port(name) when is_atom(name) do | |
| dist_port Atom.to_string name | |
| end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| самый простой способ зайти по ssh на продакшен и у бинарника которым запускаешь проект выполнить attach_console | |
| [12:45] | |
| или есть сложней способ, сделать тунелирование портов с продакшена | |
| их список можно увидеть запустив команду | |
| `epmd -names` | |
| `ssh -N remote_hose -L port1_from_command_above:localhost:port1_from_command_above -L port2_from_command_above:localhost:port2_from_command_above` | |
| запустить свою локальную версию продакшен проекта с таким же значением куки как и продакшен, и вуаля ты можешь видеть все что происходит на продакшене | |
| например запустить observer (edited) |
NewerOlder