我希望我的网页的视口宽度等于设备宽度,只要设备宽度 > 450px,否则450px(我的布局动态缩放,但在450px宽度以下看起来不太好).
以下两个元标记在平板电脑上运行良好,其中设备宽度> 450px:
<!-- uses device width -->
<meta name="viewport" content="width=device-width" />
<!-- use of initial-scale means width param is treated as min-width -->
<meta name="viewport" content="width=450, initial-scale=1.0" />
Run Code Online (Sandbox Code Playgroud)
但是,在手机上(例如设备宽度= 320px),前者对于内容来说太薄了; 后者导致浏览器放大,因此用户必须手动缩小才能看到内容.
或者,此元标记在手机上运行良好
<meta name="viewport" content="width=450" />
Run Code Online (Sandbox Code Playgroud)
但没有利用平板电脑上的额外宽度.
任何帮助/想法将非常感激(如果它有所作为,我正在使用GWT).
我有一个Postgres表,其内容与此类似:
id | data
1 | {"a":"4", "b":"5"}
2 | {"a":"6", "b":"7"}
3 | {"a":"8", "b":"9"}
Run Code Online (Sandbox Code Playgroud)
第一列是整数,第二列是json列.
我希望能够扩展json中的键和值,所以结果如下所示:
id | key | value
1 | a | 4
1 | b | 5
2 | a | 6
2 | b | 7
3 | a | 8
3 | b | 9
Run Code Online (Sandbox Code Playgroud)
这可以在Postgres SQL中实现吗?
我试过的
鉴于原始表可以这样模拟:
select *
from
(
values
(1, '{"a":"4", "b":"5"}'::json),
(2, '{"a":"6", "b":"7"}'::json),
(3, '{"a":"8", "b":"9"}'::json)
) as q (id, data)
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法获取密钥:
select id, json_object_keys(data::json) …Run Code Online (Sandbox Code Playgroud) 在 Postgres 中,如果我执行以下操作:
select (now() - created_at) from my_table
Run Code Online (Sandbox Code Playgroud)
我得到这样的结果:
854 days 12:04:50.29658
Run Code Online (Sandbox Code Playgroud)
然而,如果我这样做:
select age(now(), created_at) fro my_table
Run Code Online (Sandbox Code Playgroud)
我得到这样的结果:
2 years 4 mons 3 days 12:04:50.29658
Run Code Online (Sandbox Code Playgroud)
根据pg_typeof(...)他们都是类型interval
但如果我尝试提取年份:
select extract(years from age(now(), created_at)) from my_table
Run Code Online (Sandbox Code Playgroud)
我得到:
2
Run Code Online (Sandbox Code Playgroud)
鉴于:
select extract(years from (now() - created_at)) from my_table
Run Code Online (Sandbox Code Playgroud)
我得到:
0
Run Code Online (Sandbox Code Playgroud)
是否有一致的方法从间隔值中提取年数(无论它是如何生成的)?
注意:我没有对数据库的写访问权限,因此无法定义存储过程等。需要是一个 select 语句。
- - -更新- - -
justify_interval(...)下面提出了建议,但不幸的是它的计算似乎不准确。
例如:
select age('2018-01-03'::timestamp, '2016-01-05'::timestamp);
Run Code Online (Sandbox Code Playgroud)
给出正确答案:
1 year 11 mons 29 days
Run Code Online (Sandbox Code Playgroud)
然而:
select justify_interval('2018-01-03'::timestamp - …Run Code Online (Sandbox Code Playgroud) 正如Eclipse文档所建议的那样,我有一个org.eclipse.core.resources.IncrementalProjectBuilder编译每个源文件的文件,我也有一个org.eclipse.ui.editors.text.TextEditor可以编辑每个源文件的文件.每个源文件都编译到自己的编译单元中,但它可以引用其他(已编译的)源文件中的类型.
这个重要的两项任务是:
为了实现这一点,我想在内存中存储所有已编译类型的表示(以下称为"类型存储").
我的问题有两个:
上面的任务1由构建器执行,而任务2由编辑器执行.因此,他们都可以访问这种类型的商店,我应该创建一个他们都可以访问的静态存储,还是Eclipse提供了一种更简洁的方法来处理这个问题?请注意,在需要时实例化构建器和编辑器是eclipse,而不是我.
打开eclipse时,我不想重建整个项目,所以我可以重新填充我的类型存储.到目前为止,我最好的解决方案是将这些数据保存在某处,然后从那里重新填充我的商店(也许在项目打开时).这是其他增量编译器通常如何做到这一点的吗?我相信Java的方法是使用一个特殊的解析器,从类文件中有效地提取这些数据.
任何见解都会非常感激.这是我的第一个DSL.
eclipse-plugin incremental-linking incremental-build incremental-compiler
我正在使用redis将会话存储在expressjs中。在本地运行时,它运行良好,甚至在大多数情况下,在heroku上运行时,也可以运行。问题是定期(当部署在heroku上时)我会丢失会话更新。
例如,一个用户登录到我的网站,然后将其用户对象添加到会话中:
req.session.user = user;
Run Code Online (Sandbox Code Playgroud)
但是(有时)当我稍后尝试(在不同的请求中)检索对象时,它不存在
//sometimes this is empty, even though I've just set it
var currentUser = req.session.user;
Run Code Online (Sandbox Code Playgroud)
我初始化会话存储如下
if (process.env.REDISTOGO_URL) {
console.log('Connecting to redis:' + process.env.REDISTOGO_URL);
var rtg = require('url').parse(process.env.REDISTOGO_URL);
var redis = require('redis').createClient(rtg.port, rtg.hostname);
redis.auth(rtg.auth.split(':')[1]);
} else {
console.log('Connecting to local redis');
var redis = require('redis').createClient();
}
//sessions
app.use(express.cookieParser('secret key for cookie monster')); //used by session
var RedisStore = require('connect-redis')(express);
app.use(express.session({
store: new RedisStore({
client: redis
})
}));
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我是否需要对会话数据进行某种刷新(或显式保存)?
我有一个Spring Boot项目,使用gradle,有三个Spring配置文件:
因此,我有四个应用程序*.yml文件:
这些环境都很好.问题是当我将代码部署到heroku时,heroku运行'gradle build'(反过来运行'gradle test'),而heroku没有设置环境变量的选项.因此我无法设置有效的配置文件.因此,当它运行测试时,它使用的是application.yml而没有application-test.yml中的覆盖.因此测试显然失败了.
到目前为止,我唯一的解决方案是将所有application-test.yml默认值放入application.yml,然后在其他配置文件中再次覆盖它们,但这显然远非理想.
有办法:
对于任何给定的(Postgres)SQL 查询,我需要能够提取列名和列类型。我不需要查询的结果。而且我需要它快速(即我不想等待查询本身完成 - 特别是如果它需要几分钟或更长时间)。
我以为我有一个解决方案:
提取以下查询的列和类型:
with X as (
select nationality, count(*)
from customers group by nationality
)
select *
from X
Run Code Online (Sandbox Code Playgroud)
我会按如下方式包装它:
select *
from (
with X as (
select nationality, count(*)
from customers group by nationality
)
select *
from X
) q
where 1 = 0
limit 0
Run Code Online (Sandbox Code Playgroud)
并且where 1 = 0andlimit 0意味着它不会运行内容。
但它不起作用
如果customers表很大,那么上面的运行需要超过一分钟。然后返回 0 个结果(如预期)。
有任何想法吗?
有没有办法(不编写我自己的 PSQL 解析器)从任何任意 PSQL 查询中获取列名和类型(不运行它完成)?
注意:目标是使其适用于任何任意(用户输入的)SQL SELECT 查询。