GeneXusの自作モジュールの配布方法(nexusサーバー)について。
GeneXusの自作モジュールを配布するサーバーnexusの設定のメモ
なんか4年前くらいに書いてたのを思いだして再配布できるようになってたから調べたら
いろいろ罠があって、でもできたので一応載せておきますw
(まぁ俺がやるんだからできて当然だよね!)
GeneXus 17u10
Docker Desktop 4.16.3
Maven 3.9.0
sonatype nexus(最新版:OSS 3.47.1-01)
今回はメンドイのでDockerを使用。
Dockerとmaven使ったことない人はちょっと難しいかもね!
ざっくりした流れとしては
dockerでnexusサーバーを起動して、Repositoryを作成して
GXからmavenを使用してnexusサーバーにアップロードして
他のGX(違うKB)でnexusサーバーからモジュールをダウンロードする。って感じです。
コンポーネントパーツ、アセンブリ、完成品の管理・配布を行うための、サーバーソフトウェアです。
ブラウザで管理画面を表示し
コンポーネントパーツ等を管理するタイプのサーバーソフトウェアです。
作業前にdockerのアップデートは適当に。
nexusのimageを取得してコンテナを起動するんですが
ここが罠。GeneXus wikiに書いてるURLは古くて最後のほうに行くと
うまく動かないという罠。
GeneXus wikiに書いてるURL:https://hub.docker.com/r/sonatype/nexus/
最新のURL:https://hub.docker.com/r/sonatype/nexus3/
docker pull sonatype/nexus3
Adminのパスワードが必要なので永続データをボリュームで外だし、ボリュームのパスは個人の環境なので適当に。
docker run -d -p 8081:8081 --name nexus -v C:\docker\nexus\nexus-data:/nexus-data sonatype/nexus3
docker ps
以下のURLにアクセス
http://localhost:8081/
(起動まで少しかかる)
nexusにログインします。
ID:admin
パスワード:ボリュームの中にパスワードファイル(admin.password)があるのでそれを参照
初回ログイン後は
パスワードの変更があるので、画面に従ってパスワードを変更する。
nexusにアップロードするのにmavenが必要なので、入ってない人は入れてください。
URLからmavenのZipをダウンロードして、ダウンロードしたZipを適当なところに解凍して、Pathを通す。
https://maven.apache.org/download.cgi
今回は「apache-maven-3.9.0-bin.zip」を使用。
以下のコマンドでPathが通ったか確認
mvn -version
Apache Maven 3.9.0 (9b58d2bad23a66be161c4664ef21ce219c2c8584)
Maven home: C:\Maven\apache-maven-3.9.0
Java version: 17.0.2, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-17.0.2
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
設定ファイルを作成(ディレクトリが無い場合は手動で作成)
%USERPROFILE%\.m2\settings.xml
%USERPROFILE%がわからない場合には、cmdで%USERPROFILE%をechoすればOK。
<settings>
<servers>
<server>
<id>★nexus側で作ったRepositoryのName</id>
<username>admin</username>
<password>★adminのパスワード</password>
</server>
</servers>
</settings>
今回はお試しなのでadminでアップロード&取得します。
GeneXusからモジュールサーバー(Nexus)を追加。
メニューの
ナレッジマネージャー > 参照モジュールの管理 を開く
モジュールを右クリックして モジュールのパッケージを作成 を選択。
なんかいろいろと設定(お試しなので全部適当)
一番下の公開するサーバーは
追加したサーバー「oqiita-test-20230214」を選択。
エラーが出なければアップロード完了。
次はモジュールを使いたいKBからダウンロードを行う。
URL等の設定はアップロードを行ったら、すでにいるはず。
違うPCで使用したい場合は
GeneXusからモジュールサーバー(nexus)を追加する。
メニューの
ナレッジマネージャー > 参照モジュールの管理 を開き、
サーバーを選択し、先ほどアップロードしたモジュールがあることを確認する。
インストールボタンを押せば、ダウンロードとインストールができるので、
あとは使用してみる。
制限事項としては画面とかトランザクションは含めることができません。
この記事読んでる人はそれくらい当然理解してるでしょう!
モジュールを使用するさいにビルド(or コンパイル)でエラーが出る場合は
モジュールのバージョンをアップして、再公開するとウマくいく場合があるので、お試しください。
(エラーの原因は知らん!)
前々から再配布ができることは知ってましたが、手順がめんどくさそう&Dockerのやり方毎回忘れるので
手を付けてなかったですが、Dockerは使ってたので
今がチャンス!とばかりに使ってみましたw
やっぱり配布ができて、バージョンも管理できるっていいですね!
画面系が配布できないという欠点?がありますが、
どうせ画面とかWork With Plusでみんなオシャレ(笑)なの作ってるんだから
問題ないでしょう!!!!!!!!
これからもコッチ系の機能が拡充することを願ってます!
以上!!!!!
]]>ちょっと時間空いたけどやったのでログ
新築の家
3人
12/10 19時~
・Figma入門
仕事?でもFigma使ってるし、GXとも連携できるっぽいので
方向転換してFigmaの勉強会になりましたーw
入門ということで基本ばっか勉強しました。
デザイナーではないので、基本の部分を抑えて
応用?や活用方法はおいおい勉強です!
開発も楽しいけど、デザインもやると楽しい。
どうしても頭が仕事よりの人間なので管理方法とか活用方法を意識しちゃうけど、まぁそのうち役に立つでしょ(知らんけど)
以上
]]>完全に私の自己満足な勉強会になったので、Oqiita勉強会という名前にしましたw
煙がいっぱいのお店
2人
11/17 19時~
・Git入門 (Gitは何回も入門するもの)
・Saucetree
・Next.js
・vercel.com (デプロイ)
普通にGitの使いかたをおさらいしただけ。
GXエンジニアだと使えない人が多いよ!(俺は使えるで!)
開発でGit使ったらだいたいコマンドで終わっちゃうけど
視覚的にわかるほうが嬉しいよね!
ついこの前バージョンアップしたし、個人的に好きなので
vercelへのデプロイも考えて、Next.jsの使い方をご紹介。
node.jsが動けばだいたいコマンド打つだけでサンプルが動くので助かるw
githubと連携してデプロイをしてみました。
勉強会中にアカウント作成してデプロイまでできるなんて、素晴らしい!
勉強会も1年くらいやって2年目になったけど、いまだにテーマ探しにモクモクしますw
以上、次も勉強会がんばろー
]]>2021年の発表が無事終わり今回から2022年度になりましたー
どっかの家
2人
10/19 19時半~
・チャットボットについて
・デザインシステムオブジェクトについて
とりあえずユーザー会でチャットボットをやろうと思ったので
テーマにしたけど企業が出してる有料のチャットボットと比べると
DialogFlowやWatsonと連携するタイプなので、限界がおおいw
GX17u6から使える機能。
テーマオブジェクトがポンコツなのでコッチになるっぽい。
そのうちBlog記事でも書こう(5月から更新止まってるしw)
ワイン1本開けたあとに勉強会してるので、半分くらい記憶ないけど
まぁ大丈夫だろう!!
次回は勝手にインポートされるオブジェクトとか
他の勉強会テーマで勉強会しよう!!!
アップ
酔っぱらって猫に絡む
以上、次も勉強会がんばろー
]]>今回は最終報告会へ向けての作戦会議でした。
煙と酒がある場所
2人
05/25 18時半~
・最終報告会どうするか相談
・ユーザー会関係ない勉強
本業が忙しくてなんもできてない。
6月から本気出す。もう振休使って本気だす。
6月も何気忙しいけどね。
飲み会もあるし、GXの教育資料も作成しないといけないし、筋トレもしたいし。。。。(ヽ”ω`)
↑PCの電源切ってから、写真とってないことを気が付いて写真とったPC
参考書籍:良いコード/悪いコードで学ぶ設計入門
例文がJavaなのでJavaが読めないとキツいなと思いました。
Javaが読めれば大丈夫だと思います。
他の言語(まぁ私はGXをメインでやってるのでGXとか)に置き換えれないようなことがあると
結構読んでる途中で「う~ん」って悩みましたw
書籍のなかで「悪魔の~」という言い回しが面白く
結構サクサク読めました。
PGのことを考えて設計、設計書を書きたい方は一読してはいかがでしょうか!?
以上
]]>SQLServerメモ
SELECT
systab.name AS テーブル名
, sysex.value AS コメント
FROM
sys.tables systab
RIGHT OUTER JOIN sys.extended_properties sysex
ON systab.object_id = sysex.major_id
AND sysex.minor_id = 0
WHERE
systab.name LIKE '%' -- テーブル名で絞り込み
ORDER BY
systab.object_id
;
SELECT
syscol.name AS カラム名
, sysex.value AS コメント
FROM
sys.columns syscol
LEFT JOIN sys.extended_properties sysex
ON syscol.object_id = sysex.major_id
AND syscol.column_id = sysex.minor_id
WHERE
object_id in (
SELECT
systab.object_id
FROM
sys.tables systab
WHERE
systab.name LIKE 'TEST' -- テーブル名で絞り込み
)
ORDER BY
syscol.column_id
;
毎回調べるのめんどい
以上
]]>転職したらGWも仕事になった。Oqiitaです。
↑前のブログの時の書き方を思い出して書いてみたw
タイトルの通り、ステータスコードを設定したい。
https://stackoverflow.com/questions/69199232/change-http-status-code-in-genexus-procedure-rest
↑のヤツはRESTのステータスコードを設定したいって質問に対して
GX17U2以降?だとAPIオブジェクト使って返却しろ。
それ以外だったらネイティブコード使えよ!って言ってる。
Call protocol=HTTPのプロシージャ(以下HTTPプロシージャ)で
ステータスコード(今回は400 Bad Request)を設定したい。
・GeneXus17 U6
・IIS C#
まずは適当にHTTPプロシージャを作成。ヘッダーも何もないポンコツ。
このプロシージャをいろいろする。↓こんな感じ。
// SDT作成
&SDT1.code = "999"
&SDT1.message = "Error Error Error"
// Header を設定
&HttpResponse.AddHeader(!"Content-Type", !"application/json; charset=utf-8")
// Body(文字列) を設定
&HttpResponse.AddString(&SDT1.ToJson())
// StatusCode を設定
CSHARP [!&HttpResponse!].Response.StatusCode = 400;
Return
想定通りの400で画面にもJSONのエラーメッセージが表示されました。なんで背景黒くなったんだ?
(ここはJsonじゃなくてもなんでも良し。)
&statusCode = 400
java context.getHttpContext().getResponse().setStatus([!&statusCode!]);
ダウンロード系のHTTPプロシージャの安全対策としていいかもしれないです。
(普通にエラーページへの遷移でいいと思うけどね。。。)
ネイティブコード書きたくないPJにとっては
全然使えない情報でしたw
以上
理論上リダイレクトもできる。
リダイレクトのステータスコードは302とか。
(用途によっていろいろあるから、詳しくは知らん)
https://www.symmetric.co.jp/blog/archives/123
CSHARP [!&HttpResponse!].Response.StatusCode = 302;
&HttpResponse.AddHeader(!"Content-Type", "text/html; charset=UTF8")
&HttpResponse.AddHeader(!"location", &HttpRequest.BaseUrl + Error_Panel.Link())
余ってるPixel 3aに犠牲になってもらいました。
先に言っておくと実用レベルじゃないです。知的好奇心で入れただけですw
スマホ用のUbuntu OSです。(たぶん!)
https://ubuntu-touch.io/
あくまでも技術的研究のためにOEMロック解除をしてます。
adbコマンドが動くようにします。ずっと前に入れたけどPC初期化のタイミングで消え去ってますw
SDKをダウンロードして適当な場所に展開してPathを通す。
SDK Platform-Tools
https://developer.android.com/studio/releases/platform-tools
コマンドプロンプトから以下のコマンドが実行できればOK。
adb version
適当に開発者モードにしてください。
USBデバッグを有効にします。
ブートローダーを使いたいのでOEMロック解除を有効にします。
ドライバが最新じゃなかったのでfastbootがうまく実行できなかった。
結構ココでてこずりましたw
https://developer.android.com/studio/run/win-usb?hl=ja
FASTBOOTモードで起動
adb reboot bootloader
以下のコマンドでアンロックします。
ここで完全初期化されるのでご注意を。
fastboot flashing unlock
fastboot oem unlock ← 古いコマンド?
ロックを解除するために、ボリュームキーで「unlock the bootloader」を選択し、電源ボタンで確定します。
ここでようやくインストールかと思い、適当にインストールしたら、見事に起動しない!!!
いろいろ調べた公式ページにちゃんと書いてました。
https://devices.ubuntu-touch.io/device/sargo/
PQ3B.190801.002 のAndroidバージョンにしてからインストールしろと。。。。
ということでまずはファクトリーイメージで上記バージョンにします。
適当にファクトリーイメージをダウンロードして、初期化(ダウンロードして、bat叩けばOKな気がする)する。
そしたら以下からインストーラーをダウンロードしてインストールします。
https://devices.ubuntu-touch.io/installer/?pk_vid=24e2499393a4e2411650093872e82ad9
端末を接続して、インストーラーを起動すると。。。
今回はWipe Userdataにチェックしなかったけど、うまくいかないときはチェックしたほうがいいらしい。
これが出たらスマホのほうでリカバリーモードにする。リカバリーモードになったらPCの Continue ボタンをポチー
最初にも書いたけど、実用レベルじゃない!
そして楽天SIM認識しないw
設定変えれば認識はしそう。まぁ使う用途ないのでAndroidに戻すと思うけど久々にROM入れ替えたりして面白かった。
以上です。
ちゃんとコマンドからデバイスが認識できてるか確認するコマンド
adb devices
fastboot devices
]]>使う機会があったのでメモ
bacpacとは?
BACPAC ファイルへのエクスポート
BACPAC ファイルは、データベースのメタデータとデータを含む BACPAC の拡張子を持つ ZIP ファイルです。
・・・・だそうです。
SQL Server Management Studio からエクスポート、インポートが可能。
SQL Server Management Studio で、エクスポートしたいデータベースを右クリックし、
メニューから [タスク] > [データ層アプリケーションのエクスポート] を選択。
新しいウィンドウで保存先を適当に設定しエクスポートすれば完了。
SQL Server Management Studio で データベースを右クリックし [データ層アプリケーションのインポート] を選択。
bacpacを選択して、適当に次へボタン連打で完了。
データとかDB構造を配布するのに便利だね(棒)
以上
]]>タイトルのまま
高いライセンス料払ってんのにバグってるのよ。
gxgral.js が!!!!!!!!
そんなときはJSデバッグして修正できる強者?はgxgral.src.js を修正する。
(gxgral.src.js は gxgral.js の圧縮前のファイル)
gxgral.src.js を修正しても圧縮されてないから、それを圧縮する方法を備忘録。
SACに記載されてる通りにやるだけなんだけどね。
https://sac.genexus.jp/viewtr_sac.aspx?28390,
Javaコマンド使うのでJavaが必要
コマンドでjava -versionが使えれば大丈夫なはず。
適当にGXのインストールディレクトリを開いて compiler.jar の存在を確認
例:C:\Program Files (x86)\GeneXus\GeneXus17JP
以下のコマンドで圧縮。C:\TEMP が作業ディレクトリのイメージ。
cd C:\Program Files (x86)\GeneXus\GeneXus17JP
java -jar compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --js_output_file "C:\TEMP\gxgral.js" "C:\TEMP\gxgral.src.js" --charset UTF-8
修正内容にもよるけど、基本的にUTF-8で出力するように文字コードも設定。
↑ここがSACとoqiitaの違いです。
compilation_level に関しては
WHITESPACE_ONLY | JavaScriptから空白・改行とコメントだけを削除します。 |
SIMPLE_OPTIMIZATIONS | WHITESPACE_ONLY での処理に加えてローカル変数のリネームを行い、コードの圧縮と最適化を行います。 |
ADVANCED_OPTIMIZATIONS | SIMPLE_OPTIMIZATIONS での処理に加えてグローバル領域を含むシンボルのリネームを行い、最高レベルの圧縮度を実現します。 いろいろ制約があるっぽいので使わないほうがいいかも? |
の3種類があります。
ちなみにこれをやってなんかあっても全部自己責任でお願いします。
なんならSACのせいにしてください。私じゃないです。
以上です。
]]>