-GWA2 更新缓存调用built-in cache方法

-GWA2 更新增加对缓存的默认集成方法,使用额外指定缓存 Key 的方式可以激活缓存服务。

$cacheKey = ‘my-cache-key’;
$data = $gwa2->getBy(“field1, field2, ….”, “field1 like ?”, $withCache=array(‘key’=>$cacheKey));
或者
$data = $gwa2->execBy(“select * from tbl_a”, “field1 like ?”, $withCache=array(‘key’=>$cacheKey));

如此,则读取服务会首先根据指定的 $cacheKey 去读取缓存服务,若获得数据,则直接返回缓存中的服务;若没有获得数据,则进一步地调用读取外部数据如Database或者Filesystem, 也即

$data = $gwa2->getBy(“field1, field2, ….”, “field1 like ?”);
或者
$data = $gwa2->execBy(“select * from tbl_a”, “field1 like ?”);

经此被调用的读取方法,会在成功获得外部数据后,调用缓存的写方法,将数据写入到缓存中,已备下次相同请求数据 Key 的读取能够直接从缓存中获得。如此则实现了对缓存的默认集成,built-in cache.

大致流程及图例如下。

之所以使用集成的Built-in的方式,是因为如果启用缓存,在多个地方需要重复对GWA2::getBy/GWA2::execBy的反复调用,先使用缓存调用一遍,然后判断返回结果,若失败则再使用Db/Fs的读取一遍,再判断返回结果,如果是成功的则设置写入到缓存。大致流程如下。
$cacheKey = “my-cache-key”;
$data = $gwa2->getBy(‘cache:’, $args=array(‘key’=>$cacheKey));
if($data[0]){
    # read cache succ
}
else{

    # read cache fail
$data = $gwa2->getBy(‘field1, field2, …’, “field1 like ?”);
if($data[0]){

    # read db succ
$gwa2->setBy(‘cache:’, $args=>array(‘key’=>$cacheKey, ‘value’=>$data[1]));
 
}
else{
    # read db fail
}

}
上面的集成(Built-in)本质上就是对这些重复代码进行封装的操作,如此则让开发更快捷。随着实践的增多,或许稍后调用时,$withCache 的参数由一个带有 cacheKey 的数组变为一个 boolean值, 而 cacheKey 的生成则自动完成。也即,
$data = $gwa2->getBy(‘field1, field2, …’, ‘field1 like ?’, $useCache=true);

实现上面的操作,离不开 -GWA2 之前的更新操作,如 
gwa2更新多数据库驱动支持

受益于此,基于 -GWA2 的 -gMIS 将首先使用该缓存服务。

-GWA2 是一套通用网络应用(软件程序)架构系统,基于 -GWA2 可以轻便构建各种网络应用程序, 包括复杂的在线购物商城、 旅游交易平台、社群或者社交网站和新闻资讯网站等, 也包括各种企事业单位网上门户,在线交互及服务作业系统等. 还可以包括为NativeApp做服务器端支持, 甚至是WebApp的全部。

逻辑图的制作,使用 -cacoo 在线完成.

发表在 -gMIS, -GWA2, 计算机技术 | 标签为 , , , , | 2条评论

書中自有顔如玉愛自己悅己容2nd愛自己悅己容汽車老司機車載

-Base62x Online 提供在线编解码


Base62x在线编码示例

0. -Bass62x 新近提供了在线对信息进行编解码的服务。想看看Base62x长什么样子,怎么用,使用 -Base62x Online / 在线编解码 马上可以体验。

1. 最近在 “-Base62x新增-PHP实现和-Java实现” 之后,陆续开始在 -gMIS 等系统中开始部署使用,并取得不错的效果。使用中,还在 -Base62x 的 PHP 版本中发现并修复了一个Bug。程序将变得更加健壮。

2. 同时,PHP版本的Base62x将被区分为PHP5和PHP7两个不同的版本,其中主要区别是PHP5不能在对象中声明常量数组,而PHP7则支持如此做。在GitHub上的版本为PHP7的版本,向下兼容需要将常量数组移动到和复制Base62x::encode和Base62x::decode两个主要方法中。

3. 最近遇到两个需求加强了我们继续完善 -Base62x。一个需求上在数字广告平台上,用户的一个click需要在不同的平台上进行跳转,这跳转的依据有时候依靠指定的 id/String来翻译地址(id/string等也需要进行编码),有的则直接将地址编码作为参数,两种方法都需要进行对URL地址做编码,在使用有字符到Base64过程中,“/”, ” “, “%”问题很多。

另外在改进 -gMIS 时,我们在JavaScript中对参数进行unescape时, 发现这个方法对“+”编码后,解码出来是“ ”,映射失败。 基于此,我们会加快推出Base62x的JavaScript版本。


Base62x 在线解码示例

 

发表在 Base62x, 编程技术, 计算机技术 | 标签为 , , , , , | 留下评论

中国国民党革委会中国国民党Apache Softwares亮月亮科技

-gMIS 更新:渐次滤出等四项


2016sep24周末北京雾霾日益严重到重度污染!圈在室内继续完善 -gMIS,本周主要更新四项,其中两项enhancements,两项bugfixs。

1. 检索渐次滤出

在进行按条件检索时,改进之前的无显示为友好显示为“没有符合相应检索条件数据”,同时列示所有检索条件。在每个条件后面显示滤出此条件的操作选项,类似在 -jingdong 购物拣选商品时的操作。这样可以友好地帮助用户在没有结果时进一步滤出某些条件,放大检索范围,从而获取到近似检索条件下的预期结果数据。

2. gtbl中前置带入resultset

在获取被管理对象表的设置时,有时候需要当前记录的数值,用以代入并做相应的更新填入,如生成一个超链接需要代入当前的ID则替换。THIS,THIS_ID,THIS_TBL等。此前的做法是每个字段级带入当前resultset参数,改进后,记录获取后,通过WebApp::set(GTBL::RESULTSET)将记录集带入到当前实例,每个字段级设置方法继承拥有可访问,无需再已方法参数形式传递。

3. registerAct兼容javascript的unescape bug

registerAct是 -gMIS 在使用 -GTAjax 的iframe模式时,需要将子窗口的javascript注册到父窗口。这一过程中,需要将待注册的方法进行unescape编码,这个方法有bug是空格编码后解码出来是+,目前针对这个bug做了修正,下一步使用 -Base62x 替换 unescape。

4. mkUrl 兼容非标准主键ID

在前期增加对非‘id’标注主键的被管理对象支持,延续修改了打印模式下等mkUrl在生成全局$url变量时,带入GTBL对象,通过 GTBL::getMyId()来兼容非标准主键ID的使用。

-gMIS (-吉密斯,-鸡觅食)是一套通用管理信息系统软件,基于一种创新的可配置的I/O来实现对数据表的管理,快捷生成各种各样的管理信息系统。

发表在 -gMIS, Base62x, 计算机技术 | 标签为 , , | 留下评论

好奇婴幼儿中国国民党革委会中国国民党Apache Softwares

-gMIS更新:多表名前缀兼容、Base62x文件名编码及返回登录前状态

中秋假期雾霾严重, 趁机更新 -gMIS ,名称比较长,大致三件事,另使用自然域名 -beijingair , -北京空气质量 查看北京实时空气质量。

1. 多表名前缀的兼容及判断
这个功能属于bugfix,之前的 -gMIS 版本中,就有对表名的兼容,主要cover的情景是有无表名,这次是继续cover多样的表名前缀。数据库设计时使用数据表的名称前缀是一种良好的习惯,为了兼容在gMIS配置文件中时有时无的表名前缀,我们设计了不同的判断模式。

这次在新的部署场景中,由于历史原因,无法统一同一个项目的表名前缀,就需要gMIS具有兼容不同表名前缀的能力,这次升级就是为了满足这种情况。实现后,gMIS既能够满足在配置文件、配置表中有无表名前缀的情况,也能够满足不同表名前缀的情况。

2. 使用 -Base62x 对附件名称编码
此前在gMIS中队所上传的附件,统一使用日期、随机数等重命名,待 -Base62x 被引入后,使用基于c语言实现的Base62x的外部命令行对附件名称进行编码,在 -PHP 中使用类似 exec 或者 system 等命令来实现。

随着 -Base62x 的PHP版本的实现,此次引入 -Base62x 的PHP实现,替换了c语言版本的外部命令行调入方式。此替换可望让程序执行的更流畅,无需再随着请求而单独触发新的进程。

在浏览时,附件文件名也使用 -Base62x 进行解码,还原附件的原始名称。

3. 返回登录前状态
通常情况下,gMIS使用PHP内置的Session进行会话管理,Session一般会有一个较长的有效期。在一些特殊的部署环境中,由于使用了较短Session有效期的情况,经常会触发被迫退出登录的情况。
当用户被迫退出登录时,会返回给用户一个登录界面,设计良好的系统应该能够在用户重新登录后返回到用户登录前的状态,这在很多系统都能够看到,如在一些电商系统,当我们以游客身份进行购物浏览时,一般情况下在进行结算前需要登录,此时如果用户进行注册、登录后,应该能够返回此前的会话状态(包括但不限于所处的页面、购物车状态等)。
gMIS也做了这样的优化,使用一个即时的Back Link(bkl)参数,在登录时携带,并在登录后返回到back link地址。

同样地,bkl使用了 -Base62x 进行编码、解码。

-gMIS (-吉密斯,-鸡觅食)是一套通用管理信息系统软件。

-Base62x 是一种改进的字符串编码方法,用来替代Base64编码或者URI/URL的编码方式。Base62x 也可以用来计数,用以替代Base16, Base32等。

base62x

发表在 -gMIS, 计算机技术 | 标签为 , | 留下评论

愛自己悅己容汽車老司機車載汽車老司機好奇婴幼儿

-gMIS更新增加深度搜索模块“深搜”

-gMIS (-吉密斯,-鸡觅食)是一套通用管理信息系统软件。-gMIS的列表页提供了丰富的搜索和排序等功能,在列表页的每一个项上都根据项值内容提供了丰富的操作符,基于这些操作符可以实现对列表项的丰富检索。


图1. 列表页搜索功能

这种较强检索功能的操作项只针对列表页有限的3-6项,-gMIS 默认在列表页列出一张数据表的前六项(基于表配置文件tblname.xml, 如果没有tblname.xml, 则根据数据表的字段顺序来取前六项)。如果要对一张数据表进行超出这前六项的操作,目前还不可能,只能由专业的技术人员,通过连接数据库的客户端软件,使用手工录入SQL语句来实现。

为满足这一需求,也即实现对一张任意数据表的任何一个字段(项)进行按条件检索,我们开发了-gMIS的深度搜索模块“深搜”,效果如下。


图2. 深度搜索的效果图

这些字段加上各种可能的操作符,以及自动的不同组合,会形成成千上万种不同的搜索条件,从而能最大程度上满足用户对所管理对象的全面、深层次的检索。


图3. gMIS Logo

发表在 -gMIS, 计算机技术 | 标签为 , | 一条评论

Apache Softwares亮月亮科技OpenAI ChatGPTPdf Drive

-Base62x新增-PHP实现和-Java实现

Base62x 是一种改进的字符串编码方法,用来替代Base64编码或者URI/URL的编码方式。Base62x 也可以用来计数,用以替代Base16, Base32等。

base62x

base62x

Base62x 有更安全的输出,编码后的表达式只有a-z, A-Z和0-9数字共计62个字符,且其在编解码时可以使用基于位运算的操作,又兼顾Base64或者URI/URL编解码的设计优点。

此前Base62x只有 c语言实现的程序,本次新增了使用 -PHP和 -Java语言实现的Base62x的编解码程序。

PHP版本的Base62x
base62x.class.php
base62x6_test.php

Java版本的Base62x
Base62x.class.jsp
base62x_test.jsp

具体程序源代码程序可以在如下地址下载:

-Base62x , https://ufqi.com/dev/base62x/?_via=-naturedns

-GitHub-Wadelau , https://github.com/wadelau/Base62x

这些写好的Base62x源代码将帮助开发者更好地集成、部署到现有系统中进行应用。

发表在 Base62x, 编程技术, 计算机技术 | 标签为 , , , , | 2条评论

中国国民党革委会中国国民党Apache Softwares亮月亮科技